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

使用按钮中的更新属性来显示对话框,例如, <p:commandButton update="dialogBoxId" . . ./>为了显示数据表中的项目。

于 2013-07-25T10:45:41.570 回答
0

让我们把这个问题分成两部分。

首先

当您想要显示更新的值(例如使用 a h:outputText)时,您需要更新此元素。更新此元素意味着,它将获取其支持 bean 的当前值。像这样做:

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

为了获得JSF2/PrimeFaces 中idToUpdate的检查命名容器。

如果您有许多需要更新的组件,我建议将它们组合成一个NamingContainer(例如p:outputPanel)。所以你只需要更新NamingContainer,而不是每个单独的组件。



第二

#CreateBookBean.selectUser.fname意思是:“获取CreateBookBean,获取它的属性selectUser并获取被selectUser调用的属性fname”。在这种情况下,您将拥有以下类布局:

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