通过p:commandButton操作发送查询参数不起作用

时间:2017-05-15 20:43:53

标签: parameters commandbutton

我需要帮助将查询参数传递到我的下一个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}&amp;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的值失败。 请帮忙......

1 个答案:

答案 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文件中获取它。