“<h:commandButton value='...?userId=#{...}'”有什么问题?

3
整个语法如下所示:
<h:commandLink action="CustomerDetails?faces-redirect=true&amp;customerId=#{item.id}" value="#{item.name}"/>

这是在dataTable中的内容,因此需要解释item的用途。但上述代码给我...
Not a Valid Method Expression: CustomerDetails?faces-redirect=true&customerId=#{item.id}

似乎不允许我连接字符串和EL表达式。在value属性中多次完成此操作,必须与action属性有关。有没有人有解决方法?

1个回答

5
尝试在h:link中使用f:param来设置customerId,这是设置查询参数的规范方式。
因此:
<h:link outcome="CustomerDetails" value="#{item.name}">
    <f:param name="customerId" value="#{item.id}" />
</h:link>

不错,但我认为action应该改为outcome。我认为在h:link中没有action - Thang Pham
1
我应该提到,你收到错误的原因是,当JSF在h:commandLink的“action”属性中看到EL表达式时,它立即假定你正在传递一个返回操作字符串的Java方法。也就是说,在“action”属性中,你不能混合文本和EL。 - Nick
抱歉我这么挑剔,但我认为不需要使用faces-redirect=true,因为这是一个显式导航,这里不需要强制重定向。在这里不需要PRG。 - Thang Pham
太正确了。我知道这一点,但出于某种原因我没有想到。我的问题应该是-1分。太愚蠢了。:( :(. 感谢你指出来给我,+1分。谢谢。 - Thang Pham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接