nik*_*gra 3 java jsf binding java-ee primefaces
我有一个绑定p:commandButton
到支持bean中的属性的问题.我试图简化我的代码以显示一般的想法.
ExampleBean是一个辅助bean
public class ExampleBean {
public String title;
List<ExampleWrapper> list;
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
ExampleWrapper是一个POJO
public class Wrapper {
public String name;
public String description;
public CommandButton button;
// Listener which changes button state
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
index.xhtml是一个主页面:
<h:form>
<h:outputText value="Title" />
<p:inpurText value="#{exampleBean.title}"
<ui:include src="list.xhtml">
<ui:param name="bean" value="#{exampleBean}">
</ui:include>
</h:form>
Run Code Online (Sandbox Code Playgroud)
list.xhtml是一个我想在几个地方重用的片段:
<ui:composition ...>
<ui:repeat id="list" var="exampleWrapper" value="#{bean.list}">
<h:outputText value="#{exampleWrapper.name}"/>
<h:outputTextarea value="#{exampleWrapper.description}"/>
<p:commandButton id="button" binding="#{exampleWrapper.button}"
value="Button" />
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
所以,我得到异常:javax.el.PropertyNotFoundException:/list.xhtml ... binding ="#{exampleWrapper.button}":目标无法访问,标识符'exampleWrapper'解析为null
没有binding
属性一切正常并且显示正常
你能解释一下为什么以及如何将按钮绑定到这个POJO属性?任何帮助将不胜感激
我正在使用带有Primefaces 3.0.1的JSF 2.0.2
在视图构建期间解析JSF UI组件的binding
(和id
)属性.在视图构建期间,该#{exampleWrapper}
实例不可用.视图构建时间是将XHTML文件解析为JSF组件树的那一刻.该#{exampleWrapper}
视图渲染时间时才可用.视图呈现时间是JSF组件树生成HTML输出的时刻.
基本上,组件树中只有一个 <p:commandButton>
生成HTML输出的次数是<ui:repeat>
迭代次数的倍数.您需要将其绑定到#{bean}
替代,或者使用JSTL <c:forEach>
而不是<ui:repeat>
.JSTL标记在视图构建期间运行,因此<c:forEach>
将生成物理上多个JSF UI组件.但是,在JSF 2.x中,通常不需要将组件绑定到支持bean.无论您认为这是解决方案的功能要求是什么,它都可以以更好的方式解决.
归档时间: |
|
查看次数: |
18358 次 |
最近记录: |