在commandLink和commandButton上导航的JSF 2.0不起作用

时间:2011-11-22 11:11:00

标签: jsf jsf-2

我正在使用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方式执行它。

4 个答案:

答案 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> 解决了我的问题。