0
  <p:column>  
    <p:commandButton id="selectButton" update="@(form)" oncomplete="userDialog.show()" icon="ui-icon-search" title="View">  
      <f:setPropertyActionListener value="#{book}" target="#{CreateBookBean.selectedUser}" />  
    </p:commandButton>  
    </p:column>  
  </p:dataTable>  
</p:outputPanel>

<p:dialog header="User Detail" modal="true" widgetVar="userDialog" width="200" height="175">                                                                          
  <h:panelGrid  columns="2" cellpadding="5">
    <h:outputLabel for="fname" value="First Name: " />
    <h:outputText id="fname" value="#{CreateBookBean.selectedUser.fname}" />
    <h:outputLabel for="lname" value="Last Name: " />
    <h:outputText id="lname" value="#{CreateBookBean.selectedUser.lname}" />
    <h:outputLabel for="mobileno" value="mobile no: " />
    <h:outputText id="mobileno" value="#{CreateBookBean.selectedUser.mobileno}" />
  </h:panelGrid>
</p:dialog>

私は最近この例に出くわしました。データテーブルは、入力した値で適切に更新されています。しかし、ダイアログボックスに表示したいときは何も表示されません。value="#{CreateBookBean.selectedUser.fname}" が value="#{CreateBookBean.fname}" の代わりに使用される理由を実際に理解しています。

ここに私のJavaコードがあります

public class CreateBookBean {  

    private Book book = new Book();  
    private List<Book> books = new ArrayList<Book>();  
    private Book selectedUser;
    public String reinit() {  
        book = new Book();  

        return null;
    }

 setters and getters are included here  
}
4

2 に答える 2

0

たとえば、 データテーブルからアイテムを表示するために、ダイアログ ボックスを表示するために使用するボタンでUpdate属性を使用します。<p:commandButton update="dialogBoxId" . . ./>

于 2013-07-25T10:45:41.570 に答える
0

この質問を 2 つの部分に分けましょう。

最初

更新された値を (たとえば で) 表示したい場合はh:outputText、この要素を更新する必要があります。この要素を更新すると、バッキング Bean の現在の値が取得されます。次のようにします。

<p:commandButton ... update="idToUpdate1, idToUpdate2, ..." >

JSF2/PrimeFaces の Naming ContaineridToUpdateのチェックを取得するため。

更新が必要なコンポーネントが多数ある場合は、それらを 1 つにグループ化することをお勧めしますNamingContainer(例: p:outputPanel)。NamingContainerしたがって、すべてのコンポーネントではなく、を更新するだけで済みます。



2番目:

#CreateBookBean.selectUser.fname意味:「をフェッチし、そのプロパティをフェッチし、呼び出されたCreateBookBeanのプロパティselectUserをフェッチします」。この場合、次のクラス レイアウトがあります。selectUserfname

public class CreateBookBean {
  private Book selectedUser;
  ....
  public Book getSelectedUser() {
    return this.selectedUser;
  }
}

public class Book {
  private String fname;
  ....
  public String getFname() {
    this.fname;
  }
}

#CreateBookBean.fname意味:「をフェッチしCreateBookBean、そのプロパティをフェッチするfname」。この場合、次のクラス レイアウトになります。

public class CreateBookBean {
  private String fname;
  ....
  public String getFname() {
    return this.fname;
  }
}

あなたが投稿したこのコードによると、私はCreateBookBeanと呼ばれるプロパティを持っていると思いますselectedUser(コードはそれを明らかにします:) target="#{CreateBookBean.selectedUser}"、そして はselectUserプロパティを持っていますfname

于 2013-07-25T10:57:30.860 に答える