相关疑难解决方法(0)

JSF支持bean结构(最佳实践)

我希望在这篇文章中,我可以得到人们对JSF页面和支持bean之间接口的最佳实践的看法.

我永远无法解决的一件事是我的支持豆的结构.此外,我从未找到关于这个主题的好文章.

什么属性属于哪个支持bean?何时适合向给定bean添加更多属性,而不是创建新bean并将属性添加到其中?对于简单的应用程序,考虑到将一个bean注入另一个bean所涉及的复杂性,为整个页面只有一个支持bean是否有意义?支持bean是否应该包含任何实际的业务逻辑,还是应该严格包含数据?

随意回答这些问题以及可能出现的任何其他问题.


至于减少JSF页面和支持bean之间的耦合,我从不允许JSF页面访问任何支持bean属性的属性.例如,我从不允许以下内容:

<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)

我总是需要这样的东西:

<h:outputText value="#{myBean.theObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)

支持bean值为:

public String getTheObjectProperty()
{
    return anObject.getAnObjectProperty();
}
Run Code Online (Sandbox Code Playgroud)

当我循环遍历集合时,我使用包装类来避免向下钻取到数据表中的对象.

一般来说,这种方法对我来说是"正确的".它避免了视图和数据之间的任何耦合.如果我错了,请纠正我.

java jsf

116
推荐指数
3
解决办法
7万
查看次数

96
推荐指数
2
解决办法
4万
查看次数

将JSF理解为MVC框架

我正在阅读JSF,我觉得为什么JSF是一个MVC框架(或者至少哪个部分属于哪个"字母")我感到很困惑.

我看了一下这个问题:JSF MVC框架中哪些组件是MVC?

我在那里阅读如果你不在聚合视图中查看模型是你的实体,视图是你的XHTML代码而控制器是托管bean.嗯......好的,但视图通常不依赖于执行进一步的业务逻辑调用,这些调用返回一组实体,例如,描述是否仍然适合?

我读过的一本书将其描述为托管bean,是Faces Servlet(Controller)用于调用业务层(Model)的某种"消息"bringer,然后XHTML代码就是视图.

有太多的解释和差异,所以我不知道哪个或如何理解它.

java model-view-controller jsf java-ee

54
推荐指数
3
解决办法
5万
查看次数

为实体创建主 - 详细信息页面,如何链接它们以及选择哪个bean范围

我已经开始学习JSF,但遗憾的是,大多数教程只提供登录或注册部分.

你能指点我一些更深入的例子吗?我感兴趣的一件事是一个展示产品清单的页面.我在页面回家,我按下页面产品,以便我可以看到添加的最新产品.每次访问该页面时,都会根据数据库中的最新条目创建产品列表.我怎么处理这个?

解决此问题的一种方法是创建一个会话范围的托管bean,在其中我将通过其他托管bean更新不同的实体.我在一些教程中发现了这种方法,但它看起来很困难而且很笨拙.

哪个是解决这类问题的最佳方法?在两页主从细节用户界面中,会话范围的正确用法是什么?

session jsf scope master-detail

25
推荐指数
1
解决办法
2万
查看次数

JSF服务层

我不确定我在JSF中使用MVC环境的方法是否是最好的方法.由于我想要充分利用JSF,我想知道我的服务层(或模型,用MVC术语说)应该如何"设计".

我知道视图 - 控制器比率应该是1比1(排除例外情况).现在我应该以什么方式设计我的服务层?我应该使用一项大型服务(不这么认为)吗?如果没有,根据我应该分割我的服务?

注意,我的服务将从Beans(控制器以MVC术语)调用,服务本身将在必要时使用JPA调用DAO.

提前致谢

java model-view-controller jsf service-layer

20
推荐指数
1
解决办法
1万
查看次数

JavaBean和ManagedBean之间有什么区别

我正在阅读Stackoverflow中的一篇旧帖子,内容如下:

In the big architectural picture, your own JSF code is the V:

M - Business domain/Service layer (e.g. EJB/JPA/DAO)
V - Your JSF code
C - FacesServlet

In the smaller developer picture, the architectural V is in turn dividable as follows:

M - Entity
V - JSP/XHTML page
C - Managed bean

So it's basically a M(MVC)C.
Run Code Online (Sandbox Code Playgroud)

在大写的情况下,JavaBean是一个模型,

但是在小写的情况下,Managed bean会变成一个控制器吗?

他们不是一回事> ?? 差异是什么?

java jsp javabeans managed-bean

8
推荐指数
1
解决办法
5051
查看次数

小型facelet应用程序中的javax.persistence.TransactionRequiredException

我试图从一个小型facelet应用程序将一些值保留到MySql数据库,但不断收到此错误.我有一个JPS页面和一个servlet这个相同的应用程序,它与大致相同的逻辑工作得很好,这是我第一次尝试使用facelets所以它可能只是一些愚蠢但我会帮助你.

谢谢

错误

javax.faces.el.EvaluationException: javax.persistence.TransactionRequiredException
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:722)
Caused by: javax.persistence.TransactionRequiredException
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTxRequiredCheck(EntityManagerWrapper.java:163)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTransactionScopedTxCheck(EntityManagerWrapper.java:145)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:263) …
Run Code Online (Sandbox Code Playgroud)

java jsf jpa

7
推荐指数
2
解决办法
3万
查看次数

从请求范围的bean访问会话范围的bean

我正在尝试使用在IceFaces页面上找到的模式.(我没有使用IceFaces,使用PrimeFaces)

在这种情况下,我有两个豆:

UserControllerUsermodel

在我的UserModel上,我有一个UserVO实例(由另一个程序员创建).在我的UserController上我有这个:

@ManagedBean
@RequestScoped
public class UserController implements Serializable
{

    private static final long serialVersionUID = 1L;
    private UserBO bo;
    private UserModel model;

    public UserController()
    {
        bo = new UserBO();
        model = new UserModel();
    }

    public void Login() throws IOException
    {
        model.setUserVo(bo.executeLogin(model.getUserVo()));
        ExternalContext externalContent = FacesContext.getCurrentInstance().getExternalContext();
        if (!model.getUserVo().isError())
        {
            model.setLoggedIn(true);
            externalContent.getSessionMap().put("userSession", model);
            externalContent.redirect(externalContent.getRequestContextPath() + "/views/request/search.html");
        } else
        {
            model.setLoggedIn(false);
            FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, model.getUserVo().getMessage(), model.getUserVo().getLogin());
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

jsf session-scope jsf-2

4
推荐指数
2
解决办法
1万
查看次数

JSF无法使用Eclipse创建托管bean X.

我正在使用Eclipse Indigo.我正在跟踪这个网站的模式,它将5个类中的bean分开,我正在使用ModelBean,BackingBeanControllerBean.

我的项目结构是:

Java resources- > src- > com.erp3.gui.user上面提到的那些bean

这是我的UserController

package com.erp3.gui.user;

import java.io.Serializable;

import com.erp3.bo.user.UserBO;

public class UserController implements Serializable {

    private static final long serialVersionUID = 1L;
    private UserBO bo;
    private UserModel model;

    public UserController() {
        bo = new UserBO();
        model = new UserModel();
    }

    public void Login() {
        model.setVo(bo.executeLogin(model.getVo()));
        System.out.println("Foi");
    }

    public UserBO getBo() {
        return bo;
    }

    public void setBo(UserBO bo) {
        this.bo = …
Run Code Online (Sandbox Code Playgroud)

eclipse jsf javabeans

1
推荐指数
1
解决办法
7564
查看次数