【问题标题】:Pass parameter to bean associated with PrimeFaces Dialog Frameworks' dialog将参数传递给与 PrimeFaces Dialog Frameworks 对话框关联的 bean
【发布时间】:2017-08-31 16:04:46
【问题描述】:

我有一个带有打开对话框的按钮的模板:

<p:commandButton 
      id="roles-button" 
      icon="fa fa-key">
      <f:setPropertyActionListener value="#{user}" target="#{userAdministrationView.selectedUser}" />
      <f:actionListener binding="#{userAdministrationView.openUserRolesDialogWithParameters()}"/>
          <p:ajax 
               event="dialogReturn" 
               listener="#{dialogHandler.showMessage}"
               update=":user-administration-form:user-administration-table" 
               global="false"
          />
</p:commandButton>

模板 (userAdministrationView) 的支持 bean 是 @ViewScoped。

我想将参数selectedUser 传递给对话框。是否可以使用 Faces.setContext/Request/FlashAttribute,如建议的here?我试图像这样实现它:

public void openUserRolesDialogWithParameters() {
    Faces.setContextAttribute("user", selectedUser);
    dialogHandler.openDialog("user-roles-dialog");
}

在对话框中支持 bean(也是 @ViewScoped):

@PostConstruct
public void init() {
    this.user = Faces.getContextAttribute("user");
    ...
}

但我在user 中得到null。 setRequestAttribute 和 setFlashAttribute 的结果相同。

Here 建议使用属性创建@SessionScoped bean,但这个决定对我来说似乎不太相关。这是唯一的方法吗?

【问题讨论】:

    标签: jsf primefaces parameter-passing dialog-framework


    【解决方案1】:

    感谢BalusC,我开始朝正确的方向搜索,我找到了this explanation。 所以,它是这样工作的:

    模板支持 bean:

    public void openUserRolesDialogWithParameters() {
        Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        sessionMap.put("user", selectedUser);
        dialogHandler.openDialog("user-roles-dialog", "contentWidth", "500");
    }
    

    对话框支持 bean:

    @PostConstruct
    public void init() {
        Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        this.user = (UserModel) sessionMap.get("user");
        sessionMap.remove("user");
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多