首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用h:commandButton传递参数

使用h:commandButton传递参数
EN

Stack Overflow用户
提问于 2010-07-19 19:39:57
回答 2查看 25.9K关注 0票数 4

我有一个a4j:commandButton,它应该根据Id将我重定向到适当的“编辑”页面,我想将其作为参数传递,如下所示:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<h:outputLink  value="/details.jsf">
    link
    <f:param name="id" value="#{bean.id}" />
</h:outputLink>

但是我对链接并不是很满意,所以有没有办法让commandButton工作呢?

哦,我还有一个bean,它应该在重定向之后获得那个"id“:

代码语言:javascript
复制
@PostConstruct
public void init(){
    id= resolve("id");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-19 19:44:58

看看BalusC编写的关于在this article中进行通信的文章

f:param仅适用于h:commandLinkh:outputLink

您可以使用隐藏的输入:

代码语言:javascript
复制
<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的注释,只需将其转换为适当的注释即可。

代码语言:javascript
复制
<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将链接“绘制”为按钮。

票数 6
EN

Stack Overflow用户

发布于 2010-07-19 21:18:16

除非我的JSF非常生疏,否则命令按钮或命令链接上的action属性用于指定faces-config-nav文件中定义的结果字符串,或者它应该指向将返回结果(或重定向/其他内容)的bean上的方法。

在您的情况下,如果您想要重定向到另一个页面...您应该在配置文件中将其定义为导航链接(如有必要,可使用redirect )。那么在你的操作按钮中你应该有类似这样的东西

代码语言:javascript
复制
<h:commandButton action="showDetails" value="details">

..。

代码语言:javascript
复制
<navigation-case>
        <from-outcome>showDetails</from-outcome>
        <to-view-id>/details.jsf?faces-redirect=true</to-view-id>
</navigation-case>

顺便说一句,<f:atribute>标记可以工作,但它只会将属性设置到组件上。因此,如果您掌握了bean中的命令按钮,就可以按名称获取属性值。要传递请求参数,请使用隐藏字段技术,如前面提到的pakore

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3280692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档