【问题标题】:JSF & HTTP Requests [duplicate]JSF 和 HTTP 请求 [重复]
【发布时间】:2017-04-24 01:53:34
【问题描述】:

让以下代码片段包含指向items.xhtml 的链接,该链接列出项目名称并允许用户选择项目以查看其详细信息:

<?xml ... ?>
<!DOCTYPE ... >
<html ... >
    <h:head>
        <title>Welcome</title>
    </h:head>
    <h:body>
        <h:outputLink value="#{facesContext.externalContext.requestContextPath}/faces/client/items.xhtml">Items</h:outputLink>   
    </h:body>
</html>

当用户单击名为Items 的链接时,请求行指出正在请求的资源是/javaee7-training/faces/client/items.xhtml,并且应该对其应用的所需操作是GET。没关系。

以下代码显示了items.xml的片段:

<?xml ... ?>
<!DOCTYPE ...>
<html ...>
    <h:head>
        <title>items</title>
    </h:head>
    <h:body>
        <h:form prependId="false">
            <h:selectOneRadio value="#{bean.itemId}"
                              layout="pageDirection">
                <c:forEach items="#{bean.items}" var="itm">
                    <f:selectItem itemValue="#{itm.itemno}" 
                                  itemLabel="#{itm.itemname}" />
                </c:forEach>
            </h:selectOneRadio>

            <h:commandButton value="Details" action="item" />
        </h:form>
    </h:body>
</html>

现在,当用户单击名为Details 的按钮时,请求行指出正在请求的资源是/javaee7-training/faces/client/items.xhtml,并且应该对其应用的所需操作是POST。我没想到会出现这个结果,因为当用户单击名为Details 的按钮时,请求的资源是/javaee7-training/faces/client/item.xhtml,而所需的操作是GET

谁能解释一下这个结果以及为什么我错了?

提前谢谢你

【问题讨论】:

    标签: jsf


    【解决方案1】:

    &lt;h:commandButton&gt; 总是触发 post 请求,因为它应该在 &lt;h:form&gt; 内。在 JSF arena 中,表单始终作为 POST 请求提交。如果您需要触发 GET 请求,请使用 &lt;h:button&gt; 而不是 &lt;h:commandButton&gt;

    用法示例:

    <h:button value="Click Me!!" outcome="item"> <!--viewId is item insted of items-->
     <f:param name="item1" value="itemVal1" />
     <f:param name="item2" value="itemVal2" />
    </h:button>
    

    【讨论】:

    • 我同意@AsSiDe,您可以使用&lt;h:link outcome="/client/items" value="To Items" /&gt; 代替不使用JSF 导航的outputLink
    • 非常感谢您的有用回答
    • @estebanrincon 感谢您的帮助
    猜你喜欢
    • 2023-04-04
    • 2012-10-03
    • 1970-01-01
    • 2018-12-08
    • 2019-04-19
    • 2021-07-29
    • 2023-03-22
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多