[英]JSF commandButton URL parameters
我想創建一個導航到不同URL的按鈕,並在URL中傳遞一些請求參數。 outputLink工作,但我想要一個按鈕,commandButton看起來不錯,但我可以傳遞參數。
有解決方案嗎?
h:commandButton
不會觸發GET
請求,而是觸發POST
請求,因此您無法使用它。 如果您已經使用JSF 2.0並且目標頁面位於相同的上下文中,那么您可以使用h:button
:
<h:button value="press here" outcome="otherViewId">
<f:param name="param1" value="value1" />
<f:param name="param2" value="value2" />
</h:button>
(此處不需要h:form
,如h:outputLink
)。 這將創建一個按鈕,轉到otherViewId.jsf?param1=value1¶m2=value2
。
但是如果你還沒有使用JSF 2.0,那么你最好的方法就是抓住CSS來設置鏈接的樣式。
<h:outputLink styleClass="button">
喜歡的東西
a.button {
display: inline-block;
background: lightgray;
border: 2px outset lightgray;
cursor: default;
}
a.button:active {
border-style: inset;
}
使用按鈕關聯一個action
,這是一個支持bean中的方法您可以在支持bean中設置params,並在按下按鈕時從鏈接到action
的方法中讀取它們。 action方法應該返回一個String
,導航處理程序將根據faces-config.xml
的配置讀取它以檢查是否必須移動到新頁面。
<h:form>
<h:commandButton value="Press here" action="#{myBean.action}">
<f:setPropertyActionListener target="#{myBean.propertyName1}" value="propertyValue1" />
<f:setPropertyActionListener target="#{myBean.propertyName2}" value="propertyValue2" />
</h:commandButton>
</h:form>
支持豆:
package mypackage;
public class MyBean {
// Init --------------------------------------------------------------------------------------
private String propertyName1;
private String propertyName2;
// Actions -----------------------------------------------------------------------------------
public void action() {
System.out.println("propertyName1: " + propertyName1);
System.out.println("propertyName2: " + propertyName2);
}
// Setters -----------------------------------------------------------------------------------
public void setPropertyName1(String propertyName1) {
this.propertyName1 = propertyName1;
}
public void setPropertyName2(String propertyName2) {
this.propertyName2 = propertyName2;
}
}
這個例子來自這里 (BalusC博客,可能他會來告訴你檢查那個鏈接,但我更快!:P)
當然,為了實現這一點,必須將bean設置為session scoped
。 如果您希望它是request scoped
您可以按照此處的步驟操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.