Facelet に次のコードがあります。
<ui:composition template="/templates/mastertemplate.xhtml">
<ui:define name="pageTitle">
<h:outputFormat value="#{msgs.productPageTitle}">
<f:param value="#{param.productName}"/>
</h:outputFormat>
</ui:define>
<ui:param name="categoryName" value="#{param.categoryName}"/>
<ui:define name="content">
<p>#{param.productName}</p>
<h:form>
<h:commandLink action="#{cartBean.addItemToCart(param.productName)}">
<f:ajax event="action" render=":cart :cartPrice" />
<h:graphicImage value="resources/img/addToCart.gif"/>
</h:commandLink>
</h:form>
</ui:define>
</ui:composition>
必要に応じて印刷し#{param.productName}
ます。はそのメソッドのas 引数をcartBean
期待します(これがひどいことはわかっていますが、私の選択ではありません)。にロガーを設定しましたが、パラメーターが通過していないことがわかり、空です。String
addItemToCart
cartBean
私が次のことをした場合:
<h:commandLink action="#{cartBean.addItemToCart('someProductName')}">
<f:ajax event="action" render=":cart :cartPrice" />
<h:graphicImage value="resources/img/addToCart.gif"/>
</h:commandLink>
#{param.productName}
文字列リテラルの代わりにを使用すると、正常に動作します。param 値を引数として渡せないのはなぜですか? ロガーが空の文字列を表示する理由を説明するメッセージが表示されますが、EvaluationException
これをどのように行うべきかわかりません。