使用以下代码与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页面上呈现)。
但我总是得到号码
IDE控制台上的ID IS:0
如果我用action="#{myBean.test(4)}"
更改我的代码,我会进入IDE控制台
4
如果我用action="#{myBean.test(6)}"
更改我的代码,我会进入IDE控制台
6
但当我回到action="#{myBean.test(m.id)}"
时,我总是在IDE控制台中得到号码0
但是,如果id在xhtml页面上的按钮标签上呈现得很好,那么该值
抛出非例外!
请帮忙吗?
答案 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;
}