我在以下场景中遇到jsf的问题所有的getter都被调用,一切看起来不错,但我无法设置值。
第一个xhtml看起来像这样,manager是一个托管bean,包含一个名为page的容器,我将内容作为ArrayList。:
<ui:repeat value="${manager.page.content}" var="entry">
<h:panelGroup rendered="${entry.type eq 1}">
<ui:include src="/entries/Question.xhtml">
<ui:param name="element" value="${entry}"/>
</ui:include>
<br />
</h:panelGroup>
</ui:repeat>
&#13;
包含的xhtml包含以下代码段:
<h:panelGrid columns="1">
<h:form id="foo">
<h:outputLabel escape="false" value="${element.content}"/>
<p:textEditor value="${element.answer}"/>
<p:commandButton value="Submit" update="foo" actionListener="${element.submit}" icon="ui-icon-disk"/>
</h:form>
</h:panelGrid>
&#13;
元素属于&#34;问题&#34;看起来像这样:
public class Question implements Content {
private int contentId;
private String content;
private String examplesolution;
private String author;
private Timestamp creation;
private String answer = "FOO";
.... (Here are all getters and setters automatically generated by netbeans)
当我打开页面&#34; Questions.xhtml&#34;按预期包含,包含内容的输出标签正确显示。发短信还具有价值和价值。按预期编写但如果我单击commandButton没有任何反应,则回答的值永远不会改变。
我在一个内容不同的网站上有几个问题对象,因此我认为制作问题Bean不是一个好主意? 谁能发现我犯的错误?
编辑: forgott在Question类中添加submit方法:
public void submit(){ ... }
它没有什么特别的,只是给我一些日志记录输出
答案 0 :(得分:0)
您的课程名为“问题”。在xhtml中命名为element,我错过了什么?我没有看到变量“提交”。也许“提交”是方法,然后你需要添加花括号“submit()”。
答案 1 :(得分:0)
也许您应该使用#{}
代替${}
。
立即计算的所有表达式都使用$ {}分隔符,并且始终是rvalue表达式。可以延迟评估的表达式使用#{}分隔符,并且可以充当右值和左值表达式。