2017-02-19 7 views
2

私の見解は、私がやろうとしています何複数のフォーム

<h:body> 
    <div id="header"></div> 
    <div id="upload"> 
     <h:form id="frmMain" enctype="multipart/form-data"> 
      <p:inputTextarea id="text" style="width: 99%" value="#{uploadfile.content}" placeholder="What are you thinking?"></p:inputTextarea> 
      <p:fileUpload auto="true" oncomplete="input()" id="fileIdPhoto" previewWidth="200" style="width: 100%" messageTemplate="{name}" fileUploadListener="#{uploadfile.upload}" mode="advanced" dragDropSupport="true" 
          multiple="true" update="messages" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" /> 
      <p:messages id="messages" autoUpdate="true" closable="true" /> 
      <p:menubar autoDisplay="false"> 
       <p:menuitem /> 
       <f:facet name="options"> 
        <p:commandButton value="Publish" update="fileIdPhoto" icon="ui-icon-extlink" actionListener="#{uploadfile.uploadPhoto}"> 
        </p:commandButton> 

       </f:facet> 
      </p:menubar> 
     </h:form> 

    </div> 
    <div id="body"> 
     <div id="post_container"> 

      <ul> 
       <ui:repeat value="#{image.allpost}" var="value"> 
        <h:form id="form"> 
         <li> 
          <div id="post">    
           <p:commandButton rendered="false" id="dynaButton" process="@this,form" value="Show" type="button" icon="ui-icon-extlink"/> cant not trigger it so I set render false 
           <p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom"> 
            <p:submenu label="Ajax"> 
             <p:menuitem value="Delete" icon="ui-icon-disk"/> 
             <p:menuitem value="Update" icon="ui-icon-arrowrefresh-1-w"/> 
            </p:submenu> 
           </p:menu> 

           <b>#{value.content}</b> <br/> 
           #{value.createtime} <br/> 
           <br /> 
           <p:galleria value="#{image.getImgByID(value.id)}" rendered="#{not empty image.getImgByID(value.id)}" var="a" panelWidth="720" panelHeight="400" showCaption="true"> 
            <h:graphicImage value="data:image/jpeg;base64,#{a.imgUrl}" style="width:100%;height:100% " alt="Image Description for #{a.imgName}" title="#{a.imgName}"/> 
           </p:galleria> 
           <p:rating value="#{value.rating}" stars="10" cancel="false"/>cant change those stars by clicking on it 
          </div> 
          <div id="post_ceperator"/> 
         </li>  
        </h:form> 
       </ui:repeat> 
      </ul> 

     </div> 
    </div> 
</h:body> 

でトリガするp:ratingタグとp:menuの値を変更するが、私のページが最初のフォームを送信しているようにそのようです。また、投稿を提出するにはどうしたらいいですか?

+0

どのコマンドボタンで評価を更新する必要がありますか? –

+0

星が変更されたときにイベントをキャッチするためにビューにonRate attを追加しますが、これらの星を変更することはできません –

+0

2つのフォームのデータを1つの送信ボタンで送信することはできません。送信ボタンは、所有者フォームのデータだけを処理します。 – bilelovitch

答えて

1

私の意見では、問題は、ui:repeatの中のコンポーネントが、各繰り返しごとに同じIDを持つことです。今

<ui:repeat value="#{image.allpost}" var="value"> 
     <h:form id="form_#{value.id}"> 
      <li> 
      <div id="post_#{value.id}"> 

のそれぞれを:

私はそのようなループ内のIDを定義するために使用される方法は、私が反復していた上でデータの一部のフィールドに基づいて、それらにユニークな接頭辞や接尾辞のいくつかの並べ替えを追加することでした問題の原因となる可能性が高いフォームを含むコンポーネントは、ループの繰り返しごとに一意のIDを持ちます。

+0

私はしようとしましたが動作しません:S –

+0

私は最初のフォームを削除すると、動作するフォームをアップロードします。 –

+0

それは奇妙な、彼らは別のフォーム..あなたの豆viewscopedですか?そのフォームの他の入力要素を作業しますか? –