我想製作一個按鈕,導航到不同的URL並在URL中傳遞一些請求參數。 outputLink工作,但我想要一個按鈕,commandButton看起來不錯,但我可以傳遞參數。JSF commandButton URL參數
有沒有解決方案?
我想製作一個按鈕,導航到不同的URL並在URL中傳遞一些請求參數。 outputLink工作,但我想要一個按鈕,commandButton看起來不錯,但我可以傳遞參數。JSF commandButton URL參數
有沒有解決方案?
的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
製備方法的方法。根據faces-config.xml
中的配置,操作方法應該返回String
,導航處理程序將讀取String
以檢查它是否必須移動到新頁面。
<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>
支持bean:
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;
}
}
這個例子是從 here取(BalusC博客,也許他會告訴你檢查鏈接,但我快:P)
當然要實現這個bean必須設置爲session scoped
。如果你希望它是request scoped
你可以按照如下步驟here