我有一个a4j:commandButton,它应该根据Id将我重定向到适当的“编辑”页面,我想将其作为参数传递,如下所示:
<h:commandButton action="/details.jsf?faces-redirect=true" value="details">
<f:attribute name="id" value="#{bean.id}" />
</h:commandButton>问题是,它不起作用。我还尝试用"f:param name=“id”value="#{bean.id}“”替换f:attribute,但也失败了。我唯一要做的事就是一个outputLink:
<h:outputLink value="/details.jsf">
link
<f:param name="id" value="#{bean.id}" />
</h:outputLink>但是我对链接并不是很满意,所以有没有办法让commandButton工作呢?
哦,我还有一个bean,它应该在重定向之后获得那个"id“:
@PostConstruct
public void init(){
id= resolve("id");
}发布于 2010-07-19 19:44:58
看看BalusC编写的关于在this article中进行通信的文章
f:param仅适用于h:commandLink和h:outputLink。
您可以使用隐藏的输入:
<h:form>
<h:commandButton action="/details.jsf?faces-redirect=true" value="details"/>
<input type="hidden" name="id" value="#{bean.id}" />
</h:form>然后在你的faces-config中,我猜是请求作用域。如果您使用JSF2的注释,只需将其转换为适当的注释即可。
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>mypackage.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>id</property-name>
<value>#{param.id}</value>
</managed-property>
</managed-bean>显然,您需要在支持bean中为该字段设置getter和setter。
或者尝试通过CSS将链接“绘制”为按钮。
发布于 2010-07-19 21:18:16
除非我的JSF非常生疏,否则命令按钮或命令链接上的action属性用于指定faces-config-nav文件中定义的结果字符串,或者它应该指向将返回结果(或重定向/其他内容)的bean上的方法。
在您的情况下,如果您想要重定向到另一个页面...您应该在配置文件中将其定义为导航链接(如有必要,可使用redirect )。那么在你的操作按钮中你应该有类似这样的东西
<h:commandButton action="showDetails" value="details">..。
<navigation-case>
<from-outcome>showDetails</from-outcome>
<to-view-id>/details.jsf?faces-redirect=true</to-view-id>
</navigation-case>顺便说一句,<f:atribute>标记可以工作,但它只会将属性设置到组件上。因此,如果您掌握了bean中的命令按钮,就可以按名称获取属性值。要传递请求参数,请使用隐藏字段技术,如前面提到的pakore
https://stackoverflow.com/questions/3280692
复制相似问题