2012-11-06 85 views
0

我在幾天內遇到了一些麻煩,並且我們無法在網上找到解決此問題的好方法。所以我會放在這裏,希望任何人都可以幫助我和其他人解決同樣的問題。發送帶有缺少必填字段的jsf請求時遇到問題

我們有一個很大的表單,其上有一些p:selectOneMenu組件。當用戶想要額外的選項時,他可以單擊組件側面的加號按鈕,將其重定向到新頁面,以創建新的選項並將其保存在數據庫中。

我們使用keepAlive函數可以很好地工作,該函數通過屏幕保存所需的對象。但是我們有一些必填字段,當空白時阻止加號按鈕。

將按鈕切換到immediate="true"並沒有真正的幫助,因爲這些字段沒有被傳遞給屬性。


所以,我們需要的是傳遞字段屬性的一種方式,所以我們可以在屏幕上保持,即使某些必填字段是空的!有沒有人有一個想法可能工作?

+0

「keepAlive函數」?究竟如何?此術語通常用於JSF 1.x + RichFaces上下文中,而不用於JSF 2.x + PrimeFaces上下文中。 – BalusC

+0

它基本上是一個功能,可以在進入新窗體並稍後返回時在會話中保留對象。然後,我們允許用戶爲組合框創建一個新選項並返回而不丟失填充字段。 JSF 2.x有更好的解決方案嗎? – Thpramos

+0

是的。只需使用'@ ViewScoped'將bean放入視圖範圍。另請參閱http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope/7031941#7031941 – BalusC

回答

2

只有當真正按下保存按鈕時,才讓required屬性評估true

<c:set var="saveButtonPressed" value="#{not empty param['form:save']}" /> 

<h:form id="form"> 
    <p:selectOneMenu ... required="#{saveButtonPressed}" /> 
    <p:inputText ... required="#{saveButtonPressed}" /> 
    ... 
    <p:commandButton id="save" ... /> 
</h:form> 
+0

馬恩這很簡單!我印象深刻,它很簡單。我花了很多時間,通過在每個組件中放入Ajax更改偵聽器來尋找解決方法。這將使頁面更加穩定。非常感謝你! – Thpramos

+0

不客氣。 – BalusC

相關問題