【问题标题】:JSF2 CommandButton Action request paramsJSF2 命令按钮操作请求参数
【发布时间】:2011-05-12 16:49:50
【问题描述】:
<h:commandButton value="Add Order"  action="#{orderBasket.addItems(param['orderItemId'])}"/>

我无法使上述工作...当您单击按钮时,参数似乎设置为空。有没有解决的办法?

还有其他方法可以将 URL 参数传递给 action 方法吗?我正在使用 Spring EL 解析器,这限制了我将参数传递到 bean 中的能力,因为我没有使用 faces-config。

【问题讨论】:

    标签: jsf-2 request parameter-passing


    【解决方案1】:

    首先,我认为你可以更好地使用 JSF,很多问题会简单得多。看起来您正在使用 JSF 作为请求/响应框架,例如 Struts。 JSF 是一个面向对象的组件框架,您应该以这种方式使用它以充分利用它。

    我会尽力解决你的问题,但我缺少一些关于你在做什么的信息。

    如果您有一个可以订购的书籍列表,假设它们显示在数据表中(您可以使用 ui:repeat 代替):

    <h:dataTable value="#{bookController.books}" var="book">
    
        <h:column>
            <h:outputText value="#{book.title}" />
        </h:column>
    
        <h:column>
            <h:commandButton value="Add Order" action="#{orderBasket.addItems(book)}" />
        </h:column>
    
    </h:dataTable>
    

    在 orderBasket 支持 bean 中,您只需将 Book(或其他)作为参数。您不需要处理请求/响应周期,当然不是在您的视图中。

    如果您需要立即在购物车中显示它,可以使用 f:ajax 标签。

    如果您需要更多解释(支持 bean 源或其他),请告诉我。

    【讨论】:

    • 谢谢,但我更喜欢通过 URL 控制状态,以允许使用浏览器后退按钮进行书签和导航。对上述问题有任何想法吗?干杯。
    • 也许尝试一个没有 Spring 的简单示例应用程序,看看它是否是罪魁祸首。也许使用 f:viewParam 在页面加载时获取真实对象。或 PrettyFaces。
    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多