【问题标题】:Bean resolved to null inside p:ajax in a datatableBean 在数据表中的 p:ajax 内解析为 null
【发布时间】:2017-01-27 08:05:47
【问题描述】:

我遇到了一个奇怪的情况,Target Unreachable identifier 'bean' resolve to null

我有一个 XHTML 主网页,其中包含如下数据表的定义:

<c:set var="bean" value="#{mainSearchBean}" />

<h:form id="form">

    <p:datatable selectionMode="#{bean.selectionMode}" rendered="#{bean.isTableRendered}" ...>
        #{bean}

        <p:ajax event="onSelect" listener="#{bean.onSelect}" />

        <ui:include src="columns.xhtml">
            <ui:param name="bean" value="#{bean}" />
        </ui:include>

    </p:datatable>

</form>

我有一个 控制器,它可以将我的 ma​​inSearchBean 生成为 SessionScoped。一旦调用了 bean mainSearchBean,就会调用生产者方法 (@Produces) 并正常创建我的 bean。事实上,如果我去打印页面中的 bean,如上面 p:ajax 组件之前的代码所示,我会得到与在 producer 方法中创建的 bean 相同的签名。

由于&lt;p:ajax&gt;listener属性中的bean,会产生Target Unreachable错误。

我在使用 JSF 2.1.26 的 Glassfish 3.1 上遇到错误。

【问题讨论】:

    标签: jsf jsf-2 glassfish-3


    【解决方案1】:

    除了标记区分大小写有点草率之外,您将变量 bean 设置为字符串文字“mainSearchBean”。您可能想要使用 EL 表达式 (#{...})

     <c:set var="bean" value="#{mainSearchBean}" />
    

    【讨论】:

    • 其实是一个EL表达式。我现在正在编辑答案。这是一个错误。
    • 请提供您实际遇到问题的代码。由于标签名称 p:datatable 无效,您的 xhtml 将引发其他错误。提供Minimal, Complete, and Verifiable example。这包括堆栈跟踪和环境。根据您提供的代码,该问题无法重现。
    • 是的。很抱歉,但我试图举一个简单的例子,因为我不在办公室,可能有真正的错误代码。我会尽快修改问题。
    猜你喜欢
    • 2014-08-25
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多