Bean在数据表中的p:ajax内解析为null

时间:2017-01-27 08:05:47

标签: jsf jsf-2 glassfish-3

我有一个奇怪的目标无法访问标识符' bean'已解决为空

我有一个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>

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

由于<p:ajax> 侦听器属性中的bean,会生成Target Unreachable错误。

我在使用JSF 2.1.26的Glassfish 3.1上出错。

1 个答案:

答案 0 :(得分:1)

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

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