无法使用primefaces图获取我的bean中的动作参数

时间:2016-08-05 15:03:34

标签: jsf primefaces

使用以下代码与primefaces 6.0

<p:diagram  value="#{myBean.model}" var="m" >
    <f:facet name="element">
        <h:commandButton value="#{m.id}" action="#{myBean.test(m.id)}"/>
    </f:facet>
</p:diagram>

@Named
@SessionScoped
public class MyBean implements Serializable {
    .....
    private  DefaultDiagramModel model;
    //getter and setter

    public String test(int id) {
        System.out.println("ID IS : " + id);
        return null;
    }
    ....
}

我在按钮标签上获取了id的值(在xhtml页面上呈现)。

但我总是得到号码

  

ID IS:0

IDE控制台上的

如果我用action="#{myBean.test(4)}"更改我的代码,我会进入IDE控制台

  

4

如果我用action="#{myBean.test(6)}"更改我的代码,我会进入IDE控制台

  

6

但当我回到action="#{myBean.test(m.id)}"时,我总是在IDE控制台中得到号码0

但是,如果id在xhtml页面上的按钮标签上呈现得很好,那么该值

抛出非例外!

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

查看how-to-pass-a-parameter-along-with-hcommandbutton。我已经使用<f:param>检查了示例,它就像你的案例中的魅力一样。

所以在你的情况下

<p:diagram  value="#{myBean.model}" var="m" >
   <f:facet name="element">
       <h:commandButton value="#{m.id}" action="#{myBean.test}">
           <f:param name="elementId" value="#{m.id}" />
       </h:commandButton>
   </f:facet>
</p:diagram>

在bean中

public String test() {
    String elementId= FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("elementId");
    System.out.println("ID IS : " + elementId);
    return null;
}