我正在尝试创建一个评论页面,其中包含一系列评论(通过o:tree布局,感谢BalusC),任何人都可以回复。我通过p:inplace显示h:inputTextArea,因此每页有多个textinputareas,带有多个命令按钮回复。我正在尝试将命令按钮映射到特定textinputarea的单个后端变量,以便每次按下命令按钮时都不会处理每个textinputarea。
编辑:代码示例
<o:tree value="#{xPost.post.comments.treeModel}" var="comment" varNode="node">
<o:treeNode>
<o:treeNodeItem>
<p:panel>
<h:outputText value="#{comment.commentText}" />
<p:inplace label="Reply">
<br/>
<p:editor value="#{post.newComment}" />
<p:commandButton action="#{post.saveComment('#{comment.ID'})}" value="Comment" ajax="false" />
</p:inplace>
<o:treeInsertChildren />
</p:panel>
</o:treeNodeItem>
</o:treeNode>
</o:tree>
要添加到此,我正在使用hibernate验证,据我所知,只能通过注释验证:
@NotBlank(message =“请输入评论。”) @Length(min = 1,max = 10000,message =“注释必须介于1到10,000个字符之间。”) @SafeHtml(message =“无效的富文本。”) private String newComment =“”;
所以从上面的代码中,当我有2+ p:editor时,每个编辑器都在处理并填充相同的back-bean变量。如何强制commentButton仅验证特定的inputBox / p:编辑器并设置backing-bean变量。
感谢您的帮助。
答案 0 :(得分:1)
只需给每个编辑器自己的表单。换句话说,将<h:form>
从<o:tree>
之外移至<o:treeNodeItem>
内。这将最终呈现多个表单,每个表单都有自己的编辑器和按钮。
答案 1 :(得分:0)
在你的情况下,我猜测以下应该做的伎俩:
<ui:repeat var="comment" ...> // or equivalent like o:tree
<h:inputText value="#{comment.message} .../>
<h:commandButton actionListener="#{bean.updateMessage}">
<f:setPropertyActionListener from="#{comment}" to="#{bean.commentBeingProcessed}"/>
<!-- Or alternatively, you can set the comment object on to the command button
and receive it on the server side as event.getComponent().getAttribute("comment")
<f:attribute name="comment" value="#{comment}"/>
-->
</h:commandButton>
</ui:repeat>
希望有所帮助。