我正在使用MyFaces 2.0和RichFaces 4.3.7。
我的任务是根据需要使用ajax在两个面板组之间切换。
<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 :(得分:0)
如何在没有ID的情况下通过面板组执行?我认为给每个组件一个ID是一个好习惯。渲染具有渲染标志的组件也不起作用,因为未渲染的组件在JSF树中不可用。 但正如你所说,你正在渲染父panelGroup,所以它应该可以工作。