2013-10-26 5 views
0

Я пытаюсь создать страницу комментариев с переменным набором комментариев (выложенных через o: tree, спасибо BalusC), на которые каждый может ответить. Я показываю h: inputTextArea через p: inplace, поэтому на странице есть несколько текстовых ресурсов с несколькими ответами на командную строку. Я пытаюсь сопоставить командную кнопку с одной внутренней переменной из определенной области textinputarea, чтобы каждый textinputarea не обрабатывался каждый раз при нажатии командной кнопки.Несколько h: inputTextarea для одиночной внутренней переменной

Edit: Пример кода

<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 (сообщение = "Пожалуйста, введите комментарий. ") @Length (min = 1, max = 10000, message =" Комментарий должен быть от 1 до 10000 символов. ") @SafeHtml (message =" Invalid Rich Text. ") private String newComment =" «;

Итак, из приведенного выше кода, когда у меня есть редактор 2+ p: editor, каждый редактор обрабатывается и заполняет одну и ту же переменную back-bean. Как заставить commentButton проверять только конкретный редактор вводаBox/p: и устанавливать переменную back-bean.

Благодарим за помощь.

+0

Один из способов - переместить '' внутрь ''. – BalusC

+0

Боже, это было так просто, и это сработало. Спасибо, BalusC. –

+0

Хорошо, я отправил его в качестве ответа. – BalusC

ответ

1

Просто дайте каждому редактору свою форму. Другими словами, переместите <h:form> снаружи <o:tree> внутрь <o:treeNodeItem>. Это, в конечном счете, сделает несколько форм с каждым его собственным редактором и кнопкой.

+0

Я просто нашел, что в элементах есть компонент под названием [Fragment] (http://www.primefaces.org/showcase/ui/fragment.jsf), который будет делать то, что я искал, но ваше решение работает без компонента. –

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> 
    

Надежда что помогает.

+0

Спасибо за ваш ответ, но я не думаю, что правильно объяснил проблему. Я отредактировал свой пост, чтобы лучше отразить мой вопрос. –