【问题标题】:ViewParam and session scoped beanViewParam 和会话范围的 bean
【发布时间】:2011-09-16 16:54:36
【问题描述】:

我定义了viewParam 来处理GET 请求,但会话bean 是null

/treeTable2.xhtml @28,119 value="#{conformanceProfileController.dataValueAssertionController.library_line}": Target Unreachable, identifier 'conformanceProfileController' resolved to null

GET请求:

treeTable2.jsf?category=Message

XHTML 代码

<f:metadata>
  <f:viewParam name="category" value="#{conformanceProfileController.category}" />
</f:metadata>

豆子

@ManagedBean
@SessionScoped
public class ConformanceProfileController implements Serializable {
    private String category;

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }
}

我的开发服务器是Tomcat 7.0,我使用Mojarra 2.1.0

编辑:我创建了一个带有新页面和新 bean 的简化版本。帖子里的代码和我机器上的一样。

XHTML 代码:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    >
<h:head>
</h:head>
<f:metadata>
    <f:viewParam name="category" value="#{myBean.category}" />
</f:metadata>
<h:body>
</h:body>
</html>

MyBean:

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class MyBean implements Serializable {
    private String category;

    public MyBean() {
        System.out.println("Creation");
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

}

GET 请求treeTable3.jsf?category=Message

错误信息: /treeTable3.xhtml @8,60 value="#{myBean.category}": Target Unreachable, identifier 'myBean' resolved to null

【问题讨论】:

  • 应该可以正常工作。您是否没有编辑/过度简化错误消息或f:viewParam?听起来好像您正在尝试在实际上是 null 的嵌套属性上设置视图参数。
  • 错误是原来的那个。我创建了一个复制问题的新页面,但我仍然遇到了问题。我还添加了一个构造函数,看看它是否真的被调用了,显然不是。

标签: jsf jsf-2


【解决方案1】:

由于注释扫描中的a bug,Tomcat/Jetty 中的 Mojarra 2.1.0 do not work。升级到至少 2.1.1 或 current 2.1.3。

这与视图参数或会话范围的 bean 无关。它只会在您期望@ManagedBean 的所有情况下失败。

【讨论】:

  • 我创建了一个新示例以确保它不是嵌套属性的问题。
【解决方案2】:

【讨论】:

  • 您能否详细说明一下为什么您认为这会有所作为?否则,我倾向于将答案否决为“随机猜测并在黑暗中刺伤”。那么最好发表评论。
  • 不是随机猜测。在使用 @Named 注释解决之前,我遇到过 NPE。
  • 好吧,我现在知道原因了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2015-01-27
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多