0

我正在根据下拉选择进行动态视图:

有代码:

<h:selectOneMenu value="#{controller.type}" >
   <p:ajax listener="#{controller.switchPanels}" update="panels" />
   <f:selectItem itemValue="1" itemLabel="option 1" />
   <f:selectItem itemValue="2" itemLabel="option 2" />
</h:selectOneMenu>

<h:panelGroup layout="block" id="panels">
   <h:panelGroup layout="block" rendered="#{controller.type == '1'}" >
   <h:inputText value="#{controller.value}" >
      <f:validateRegex pattern="^[0-9a-zA-Z ]*$" />
   </h:inputText>
   </h:panelGroup>
   <h:panelGroup layout="block" rendered="#{controller.type == '2'}" >
      Panel 2
   </h:panelGroup>
</h:panelGroup>

<h:commandLink action="#{controller.go}">Go</h:commandLink>

控制器:

@ViewScoped    
@ManagedBean
public class Controller {
   String type = "1";
   String value;

   // getters and setters

   public void switchPanels(AjaxBehaviorEvent event) {
      this.value = "";
   }

   public void go(){
   }
   ...
}

试试这个场景:
- 在值字段中写入特殊字符
- 按 Go(导致弹出验证消息)
- 尝试更改选择并再次重新选择相同的面板

结果是即使我在 switchPanels 方法中清除了该字段也没有清除它

请任何解释都会有帮助

谢谢

4

0 回答 0