Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 值未从datatable传递到对话框_Jsf_Primefaces - Fatal编程技术网

Jsf 值未从datatable传递到对话框

Jsf 值未从datatable传递到对话框,jsf,primefaces,Jsf,Primefaces,我最近遇到了这个例子。 datatable正在使用我输入的值进行正确更新。但是当我想在对话框中显示它时,它不会显示任何内容。 我实际上不明白为什么使用value=“#{CreateBookBean.selectedUser.fname}”代替value=“#{CreateBookBean.fname}” 这是我的java代码 <p:column> <p:commandButton id="selectButton" update="@(form)" oncomp

我最近遇到了这个例子。 datatable正在使用我输入的值进行正确更新。但是当我想在对话框中显示它时,它不会显示任何内容。 我实际上不明白为什么使用value=“#{CreateBookBean.selectedUser.fname}”代替value=“#{CreateBookBean.fname}”

这是我的java代码

  <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>
public类CreateBookBean{
私人书籍=新书();
private List books=new ArrayList();
私人书籍选择服务;
公共字符串reinit(){
书=新书();
返回null;
}
这里包括setter和getter
}

使用按钮中的Update属性来显示对话框,例如,
以显示数据表中的项目。

将此问题分为两部分

首先

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

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  
}
#CreateBookBean.fname
的意思是:“获取
CreateBookBean
,获取它的属性
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
有一个名为
selectedUser
(代码显示它:
target=“#{CreateBookBean.selectedUser}”
),而且
selectUser
有一个属性
fname

值“book”未达到其目标。因此,在打开对话框时,它不会显示任何值!“书”的类型是否为用户?如果是这样,您需要在问题中添加其他代码以查看问题。处理过程中是否有任何异常/错误消息?张贴他们以及!book是我使用的datatable的var名称。向我们展示更多代码!xhtml和java。否则我们就帮不了你了!也许你也应该读书。“账面”价值没有达到其目标。因此,在打开对话框时,它不显示任何值!–Pramoth刚才你的问题得到回答了吗?你的问题真的解决了吗?我看到你接受了手册的答案,但我也看到你在评论中不断抱怨手册不起作用。我在回答中没有看到任何反馈,表明你的问题确实得到了解决。因此,对答案的接受是非常令人困惑的。我的第二个问题得到了答案。不是第一次。我还没有得到第一个问题的答案。你能帮我吗?当你第一次打开对话框时,用firebug(或类似的东西)检查你的请求,以及你从服务器得到的响应。在你的答案中同时发布请求和回复。你的
表格是什么?
p:outputPanel
p:dialog
?我们无法在您的代码中看到它!加上它。
public class CreateBookBean {
  private Book selectedUser;
  ....
  public Book getSelectedUser() {
    return this.selectedUser;
  }
}

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