2016-02-04 33 views
0

我正在使用MyFaces 2.0和RichFaces 4.3.7。解決或禁用MyFaces警告「HtmlRendererUtils警告如果呈現輸入,應始終提供一個輸入值」

我的任務是根據需要使用ajax在2個面板組之間切換。

<h:panelGroup rendered="#{!someBean.renderOk}" id="firstpanel"> 
    <h:inputText value="#{someBean.valueA}"></h:inputText> 
    <h:inputText value="#{someBean.valueB}"></h:inputText> 
</h:panelGroup> 


<h:panelGroup rendered="#{someBean.renderOk}" id="secondpanel"> 
    <h:inputText value="#{someBean.valueC}"></h:inputText> 
    <h:inputText value="#{someBean.valueD}"></h:inputText> 
</h:panelGroup> 
<h:selectBooleanCheckbox value="#{calendarBean.popup}" > 
<a4j:ajax event="click" render="firstpanel secondpanel" /> 
</h:selectBooleanCheckbox> 
<a4j:commandButton value="Save" actionListener="someBean.requestSave" 
render="@form" execute="@form" /> 

我支持bean是

public class SomeBean implements Serializable{ 

/getters and setters defined/ 
private String valueA; 
private String valueB; 
private String valueC; 
private String valueD; 

private boolean renderOk; 

@inject 
SomeDelegate someDelegate; 


public void save(){ 
    if(renderOk){ 
     someDelegate.save(valueC,valueD); 
    }else{ 
     someDelegate.save(valueA,valueB); 
    } 
} 

} 

這是我的代碼只是一些部分我明白,我不能傳遞一個inputText的值作爲禁用或隱藏的,但我不能對妥協。是否有任何解決方法可以將值從提交隊列中刪除。

表單提交時沒有問題,但MyFaces正在顯示警告消息。

HtmlRendererUtils WARN如果輸入呈現,其表單已提交,並且最初不是呈現爲禁用或只讀,則應始終提供輸入值。通過JavaScript禁用輸入元素後,您無法提交表單。考慮將只讀設置爲true,或者在提交表單之前將禁用的值重置爲false。

渲染和隱藏輸入的頻率非常高,恐怕我的日誌文件會很大。我如何解決或禁用這些警告消息?

+0

我錯過了提交表單和/或呈現panelGroup的部分。可能有助於添加完整的xhtml。我的第一個想法是,你錯過了啓動渲染的組件中的「執行」。 –

+0

@MilovdZee我的提交按鈕位於面板組之外。即時通過整個小組組執行。 –

+0

以防萬一,這有助於某人:我有一個使用dataTable的自己的jsf組件的類似問題。我可以通過在表單中​​包裝dataTable來擺脫這個問題。 – narko

回答

0

如何通過panelgroup執行沒有id?我認爲給每個組件一個ID是個好習慣。使用呈現標誌渲染組件也不起作用,因爲沒有渲染的組件在JSF樹中不可用。 但正如你所說你正在渲染父面板組,因此應該工作。

+0

忘記代碼我想知道的是如何根據條件從提交隊列中刪除組件 –