gpt4 book ai didi

jsf - 不是 JSF 中的有效方法表达式

转载 作者:行者123 更新时间:2023-12-04 23:05:17 24 4
gpt4 key购买 nike

我有一个命令按钮,我想用它来导航到另一个 jsf facelet,但是我得到了一个无效的方法表达式:

 <h:commandButton value="Save Edits" action="editOrDeletePage.xhtml?editing=true;#{product.id};name=#{product.productName};description=#{product.description};quantity=#{product.quantity}"/>

如果我只有,我可以让它工作
action="editOrDeletePage.xhtml?editing=true"

我想当我传递多个属性时,我没有正确分隔它们。有任何想法吗?

最佳答案

action属性包含一个 EL 表达式,它被解释为一个方法表达式。因此,它仅在您使用 action="#{bean.someMethod}" 时才真正有效。 .但是,您的尝试并不代表有效的方法表达式,而是代表了不被 action 接受的值表达式。属性。

如果你打算在表单提交中附加额外的请求/ View 参数,那么你应该使用 <f:param> .

<h:commandButton value="Save Edits" action="editOrDeletePage.xhtml">
<f:param name="editing" value="true" />
<f:param name="id" value="#{product.id}" />
<f:param name="name" value="#{product.productName}" />
<f:param name="description" value="#{product.description}" />
<f:param name="quantity" value="#{product.quantity}" />
</h:commandButton>

请注意,这些参数不会出现在请求 URL 中(如您在浏览器地址栏中看到的),并且您的理论方法也不会这样做,JSF 命令按钮即生成 HTML <input type="submit">提交到与 action 中指定的 URL 完全相同的 URL 的元素父 HTML 的属性 <form method="post"> .

另请注意,这些参数不会在表单提交期间进行评估,而是在显示表单期间进行评估。如果您打算以这种方式传递提交的值,那么您基本上就做错了。也许您想将它们指定为 View 参数,以便您可以使用 action="editOrDeletePage?faces-redirect=true&amp;includeViewParams=true"作为行动。

毕竟,您根本没有详细阐述具体的功能需求,因此很难为您提出正确的解决方案。

关于jsf - 不是 JSF 中的有效方法表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com