我正在使用JSF 2.0,我在commandLink和commandButton之后遇到导航问题。我使用以下代码:
<h:commandLink action="login?faces-redirect=true"
value="#{showElementBean.showElement()}"> Login </h:commandLink>
<h:commandButton action="login?faces-redirect=true" value="Move to login.xhtml" />
这些标签位于表单内,登录只是一个例子。单击渲染控件的结果始终是POST并刷新当前页面。我错了什么?
修改 根据BalusC的评论,我添加了真正的代码片段:
<h:commandLink actionListener="#{showElementBean.showElement(element)}"
value="View" > </h:commandLink>
我有一个包含元素列表的页面,我想添加指向元素视图页面的链接。因此,我需要将此元素传递给显示页面。我是JSF的引物,例如在Rails中我会使用GET和URL参数,但我不知道如何以JSF方式执行它。
答案 0 :(得分:9)
此行为可能有很多原因。它们都在以下答案中引用,并附带解决方案:commandButton/commandLink/ajax action/listener method not invoked or input value not updated。
但是,在您的特定情况下,您似乎更喜欢普通的GET请求而不是POST请求,因为您只需要简单的页面到页面导航。在这种情况下,您需要<h:link>
或<h:button>
代替:
<h:link outcome="login" value="Login" />
<h:button outcome="login" value="Move to login.xhtml" />
(我不知道你要用 #{showElementBean.showElement()}
和Login
作为命令链接值做什么,所以我省略了前者< / em>的
答案 1 :(得分:0)
请参阅此信息: JSF HTML Tags
H:的commandButton
commandButton标记呈现可以的HTML提交按钮 与事件的辅助bean或ActionListener类相关联 处理目的。按钮的显示值也可以是 从消息包中获得以支持国际化(I18N)。
示例强>
<h:commandButton id="button1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
HTML输出
<input id="form:button1" name="form:button1" type="submit" value="Check Out" onclick="someEvent();" />
H:commandLink
commandLink标记呈现一个行为类似的HTML锚标记 表单提交按钮,可以与支持bean或 用于事件处理目的的ActionListener类。显示值 该链接也可以从消息包中获取以支持 国际化(I18N)。
示例强>
<h:commandLink id="link1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
HTML输出
<a href="#" onclick="someEvent();" id="form:link1">Check Out</a>
答案 2 :(得分:0)
如果表单用于文件上传,请注意不调用backing bean方法:
<h:form name="searchForm" enctype="multipart/form-data" method="post" action="/search">
答案 3 :(得分:-3)
我也遇到了这个问题并添加了
<h:form><h:commandLink></h:commandLink> </h:form>
解决了我的问题。