我需要帮助将查询参数传递到我的下一个JSF页面。我已经尝试了一切,但我被卡住了。如果我自己输入网址,我可以在第二页中检索参数。示例:localhost:8080 / devices?propId = 24& faces-redirect = true来自primefaces commandButton操作。但是,如果我尝试动态地执行此操作,我会收到如下错误:不是有效的方法表达式:property / devices?propId =#{recentPropertyFEnd.selected.idpropertytable}& faces-redirect = true。
我已经尝试了一切。 f:param,f:viewParam等,但nothings有效。
我想问题是,从JSF中的commandButton发送查询参数的正确方法是什么?
第一页的命令按钮:
<p:commandButton value="Show Devices" action="property/devices?propId=#{recentPropertyFEnd.selected.idpropertytable}&faces-redirect=true"> </p:commandButton>
第二页f:viewParam:
<f:metadata>
<f:viewParam name="propId" value="#{deviceFEnd.propId}"/>
<f:viewAction action="#{deviceFEnd.actioncheck()}" />
</f:metadata>
管理bean第二页:
@Named(value = "deviceFEnd")
@RequestScoped
public class DeviceFEnd implements Serializable {
private int propId;
public DeviceFEnd() {
}
public int getPropId() {
return propId;
}
public void setPropId(int propId) {
this.propId = propId;
}
public void actioncheck() {
int x = 0;
x++;
}
@PostConstruct
public void init() {
}
}
像我说的那样,如果我自己在动作commandButton中输入它,但如果我试图使用来自bean的值失败。
请帮忙......
答案 0 :(得分:1)
我已经弄清楚了。使用commandButton的操作来调用生成字符串url的方法。像:
<p:commandButton value="Show Devices" action="firstBean.createString()"> </p:commandButton>
然后在firstBean中创建方法createString as:
public String createString() {
return "property/devices?propId=" + selected.getIdpropertytable() + "&faces-redirect=true";
}
这将创建字符串url = http://localhost:8080/yourApp/property/devices?propId=46
就是这样,你可以使用viewParam从第二个xhtml文件中获取它。