防止 h:Commandbutton 提交表单

3
我有一个表单和两个嵌入其中的命令按钮,如下所示。
<h:commandButton label="Submit" type="button" 
    image="resources/images/Save4.jpg" 
    actionListener="#{userController.createNewUser()}" /> 

<h:commandButton label="Home" 
    image="resources/images/Save4.jpg" 
    action="/index.jsf?faces-redirect=true" /> 

点击 Home 按钮应该重定向到 index.jsf,但它会导致表单提交。我不想将 home 命令放在另一个表单标签中,因为这会导致界面扭曲。请提供一种解决方法。

你应该使用 <h:outputLink> 或者 <h:link> 来实现这个功能。 - Ioan
2个回答

3
一个命令按钮会提交整个POST表单,它不适用于普通的页面导航。 它也不友好于SEO(搜索引擎爬虫不会索引POST表单)。
如果唯一的功能需求是有一个可点击的图片并导航到另一页,则只需使用。
<h:link outcome="/index.jsf">
    <h:graphicImage name="images/Save4.jpg" />
</h:link>

1

使用POST方法进行页面导航是不明智的,可以考虑使用以下方法代替:

<h:button label="Home" image="..." outcome="/index" />

1
这不仅不友好于SEO,而且导航是通过JavaScript而不是HTML进行的。搜索引擎通常无法解密/跟踪JavaScript代码。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接