【问题标题】:h:form should do GET request to different URLh:form 应该对不同的 URL 做 GET 请求
【发布时间】:2015-08-07 16:21:32
【问题描述】:

我有一个带有类似 URL 的 JSF 应用程序

/customers/12345/invoices/
/customers/56789/addresses

每个页面的顶部是一个数字选择表单,它应该会导致 GET 重定向到与上述类似的 url,只是将数字替换为用户选择的那个。 GET 请求应该包含 javax.faces.ViewState。它的行为应该像在常规标签内一样,或者好像我想发布到完全不同的服务器。

这样做的 JSF 风格是什么?

我的表单看起来像这样:

    <p:selectOneMenu id="nr" onchange="submit()" value="#{menuBacking.selectedNumber}">
        <f:selectItems value="${menuBacking.allNumbers}" var="number" itemLabel="${number.label}" itemValue="${number.value}" />
    </p:selectOneMenu>

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    直接使用纯 HTML &lt;form&gt;,或者使用 GET 链接/按钮而不是 POST 链接/按钮。

    &lt;p:selectOneMenu&gt; 支持自定义内容。只需在那里创建 GET 链接。

    <p:selectOneMenu layout="custom" var="number">
        <f:selectItems value="#{menuBacking.allNumbers}" />
        <p:column>
            <a href="/customers/#{number.value}/#{number.label}">#{number.label}</a>
        </p:column>
    </p:selectOneMenu>
    

    如有必要,使用 CSS 去除下划线/颜色,并使其成为内联块元素,使其看起来更好。

    【讨论】:

    • 谢谢,我现在还没有关于 p:column 的信息! “布局”似乎不是一个已知的属性,所以我把它省略了。我使用 selectOneMenu 的“值”设置了默认值。显然它必须是 allNumbers 的一个元素,并使用 toString() 进行格式化,而不是 p:column 中给出的格式。不过这有点丑。
    • 不客气。不确定您之后尝试在那里描述什么问题,但是正如您明确提到的toString(),我相信您只需将&lt;f:selectItems&gt;varitemValue 明确设置为所需的类型。为了简洁起见,我只是省略了那些(也因为通常会为它注册一个(默认)转换器)
    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 2021-08-01
    • 2020-01-11
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多