JSF2.0在commandLink和commandButton上导航不';行不通

JSF2.0在commandLink和commandButton上导航不';行不通,jsf,jsf-2,Jsf,Jsf 2,我使用的是JSF2.0,commandLink和commandButton之后的导航都有问题。我使用以下代码: <h:commandLink action="login?faces-redirect=true" value="#{showElementBean.showElement()}"> Login </h:commandLink> <h:commandButton action="login?faces-redirect=true" valu

我使用的是JSF2.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" />
登录
这些标记位于表单中,登录只是一个示例。单击呈现控件的结果始终是刷新当前页面后发布。我错了什么

编辑: 根据BalusC I“添加真实代码片段”的评论:

<h:commandLink actionListener="#{showElementBean.showElement(element)}" 
    value="View" > </h:commandLink>

我有一个包含元素列表的页面,我想添加指向元素视图页面的链接。因此,我需要将此元素传递到显示页面。我是JSF primer,例如在Rails中,我会使用GET和URL参数,但我不知道如何“以JSF的方式”实现它。

请参考以下信息:

h:命令按钮 commandButton标记呈现一个HTML提交按钮,该按钮可以 与事件的支持bean或ActionListener类关联 处理目的。按钮的显示值也可以是 从支持国际化(I18N)的消息包中获取

示例

<h:commandButton id="button1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
<h:commandLink id="link1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" /> 

HTML输出

<input id="form:button1" name="form:button1" type="submit" value="Check Out" onclick="someEvent();" /> 
<a href="#" onclick="someEvent();" id="form:link1">Check Out</a>


h:commandLink commandLink标记呈现一个HTML锚定标记,其行为类似于 表单提交按钮,可以与支持bean或 用于事件处理的ActionListener类。的显示值 还可以从消息包中获取链接以支持 国际化(I18N)

示例

<h:commandButton id="button1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" />
<h:commandLink id="link1" value="#{bundle.checkoutLabel}" action="#{shoppingCartBean.checkout}" /> 

HTML输出

<input id="form:button1" name="form:button1" type="submit" value="Check Out" onclick="someEvent();" /> 
<a href="#" onclick="someEvent();" id="form:link1">Check Out</a>


这种行为有很多可能的原因。以下答案中引用了所有这些问题以及解决方案:

然而,在您的特定情况下,您似乎对简单的GET请求而不是POST请求更感兴趣,因为您只需要简单的页到页导航。在这种情况下,您需要一个

<h:link outcome="login" value="Login" />

<h:button outcome="login" value="Move to login.xhtml" />

(我不知道你想用
作为命令链接值来做什么,所以我省略了前者)

另见:

注意到,如果表单用于文件上载,则不会调用backingbean方法:

我也面临着这个问题,添加了

解决了我的问题。

页面上有元素吗?你根本没有回答他的具体问题,你只是从jsftoolbox.com网站上抄袭,没有引用来源。@Balu:没有这样的。我试图解释这一点,以便他能够理解,他在完整的代码中遗漏了什么,我们没有看到。这不是一个答案。您没有解释OP面临特定问题的原因。只需在jsftoolbox.com上发布一个链接,作为对该问题的评论。谢谢您的关注。事实上,我想,如果我发布内容,那么它可能会帮助他和其他人。好的,然后我会等待一段时间,如果有更多的反对票,其他人也觉得这不是有用的信息,那么我会删除我的帖子。登录可能不是最好的例子。我有一个项目列表,我想传递其中一个以显示项目视图。我认为GET就足够了,但我不知道如何在呈现show页面之前传递参数并读取它们。顺便说一句,正常的链接和按钮工作正常。在链接/按钮中使用
,在目标页面中使用
。另见。顺便说一句,您应该真正确定它应该是GET(可书签、可索引搜索机器人)还是POST(不可书签/可索引)。但是,在您的示例中,您没有调用任何bean操作方法,因此我理解您毕竟只需要GET。谢谢,我添加了更多详细信息来解释如何使用POST/GET。那么您想使用GET和URL参数吗?然后,
建议仍然适用。最后,我使用了您博客中描述的GET with解决方案。您的问题是由OP的具体问题以外的其他问题引起的。如果你在这方面需要帮助,只要问一个新问题,而不是把它作为一个不相关的答案张贴出来。我也看到了同样的行为。如果我将enctype添加为multipart,则不再调用支持bean。我不知道怎么解决你根本没有回答OP的具体问题。OP清楚地提到,他已经在一个表单中使用了它们。在任何情况下,堆栈溢出都不是“我也是!”的合适位置,就像那些老式论坛上的杂乱一样,这些地方很难搜索到。如果可以的话,就把有用的答案投上去,然后继续前进。