當action
屬性包含一個EL表達式,它解釋爲一種方法表達。因此,只有在使用action="#{bean.someMethod}"
時纔有效。但是,您的嘗試不代表有效的方法表達式,而是代表一個值表達式,該值不被action
屬性接受。
如果您打算向表單提交附加的請求/查看參數,那麼您應該使用<f:param>
。
<h:commandButton value="Save Edits" action="editOrDeletePage.xhtml">
<f:param name="editing" value="true" />
<f:param name="id" value="#{product.id}" />
<f:param name="name" value="#{product.productName}" />
<f:param name="description" value="#{product.description}" />
<f:param name="quantity" value="#{product.quantity}" />
</h:commandButton>
注意,這些參數不請求URL結束(如你在瀏覽器地址欄中看到)和你的理論方法也不會那樣做,一個JSF命令按鈕即生成HTML <input type="submit">
元素,它提交到父HTML <form method="post">
的action
屬性中指定的非常相同的URL。
另請注意,在表單提交過程中,不會評估這些參數,而是在顯示錶單時進行評估。如果你以這種方式通過提交的值,那麼你基本上做錯了。也許你想將它們指定爲查看參數,以便您可以使用action="editOrDeletePage?faces-redirect=true&includeViewParams=true"
作爲操作。
畢竟,很難爲您提出正確的解決方案,因爲您沒有詳細闡述具體的功能要求。
贏家,非常感謝! – user1154644