0

我正在尝试创建一个评论页面,其中包含一组可变的评论(通过 o:tree 布局,感谢 BalusC),任何人都可以回复。我通过 p:inplace 显示 h:inputTextArea,因此每页有多个 textinputarea 和多个命令按钮回复。我正在尝试将命令按钮映射到来自特定 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>

除此之外,我正在使用休眠验证,据我所知,它只能通过注释进行验证:

@NotBlank(message="请输入评论。") @Length(min=1, max=10000, message="评论必须在 1 到 10,000 个字符之间。") @SafeHtml(message="无效的富文本。" ) 私有字符串 newComment = "";

因此,从上面的代码中,当我有 2+ p:editor 时,每个编辑器都被处理并填充相同的 back-bean 变量。如何强制 commentButton 仅验证特定的 inputBox/p:editor 并设置 backing-bean 变量。

谢谢您的帮助。

4

2 回答 2

1

只需给每个编辑器自己的表单。换句话说,将 的<h:form>从外部移动<o:tree>到内部<o:treeNodeItem>。这最终将呈现多个表单,每个表单都有自己的编辑器和按钮。

于 2013-11-02T20:42:58.387 回答
0
  1. 您需要提供您的来源详细信息,以便人们为您提供更多帮助
  2. 在您的情况下,我猜以下应该可以解决问题:

    <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>
    

希望有帮助。

于 2013-10-26T06:30:02.700 回答