jsf ajax条件呈现不起作用
我有一个带有selectonemenu的表单,其中有selectitems“D”和“F”,我想在选择“D”时呈现一些其他元素,如h:outputtext和h:inputtext,并在选择“F”时隐藏它们,我一直在关注这个问题,并试图对我的情况进行相同的处理,但出于某种原因,页面不响应SeleConeNu中选择的更改 my view.xhtml:jsf ajax条件呈现不起作用,ajax,jsf,selectonemenu,Ajax,Jsf,Selectonemenu,我有一个带有selectonemenu的表单,其中有selectitems“D”和“F”,我想在选择“D”时呈现一些其他元素,如h:outputtext和h:inputtext,并在选择“F”时隐藏它们,我一直在关注这个问题,并试图对我的情况进行相同的处理,但出于某种原因,页面不响应SeleConeNu中选择的更改 my view.xhtml: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" x
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<h:head>
<meta charset="utf-8" />
<title>New item</title>
<link rel="stylesheet" href="style.css" />
</h:head>
<h:body>
<div id="wrapper">
<header>
<ul>
<li><h:outputLink value="index.xhtml">main</h:outputLink></li>
<li><h:outputLink value="reservations.xhtml">reservations</h:outputLink></li>
<li><h:outputLink value="items.xhtml">items</h:outputLink></li>
<li><h:outputLink value="revenue.xhtml">revenue</h:outputLink></li>
<li><h:outputLink value="statistics.xhtml">statistics</h:outputLink></li>
</ul>
</header>
<div id="content">
<div id="inner">
<h:form prependId="false">
<h:outputText value="Type:" />
<h:selectOneMenu id="type" value="#{newItemMB.type}">
<f:selectItem itemLabel="" itemValue="#{null}" noSelectionOption="true"/>
<f:selectItem itemLabel="Drink" itemValue="D" />
<f:selectItem itemLabel="Food" itemValue="F" />
<f:ajax execute="@form" render="selectInputPanel"/>
</h:selectOneMenu>
<h:outputText value="Name:" />
<h:inputText id="name" label="name">
<f:validateLength minimum="1" maximum="100" />
</h:inputText>
<h:outputText value="Price:" />
<h:inputText id="price" label="price">
<f:validateLength minimum="1" maximum="50" />
</h:inputText>
<h:panelGroup id="selectInputPanel">
<h:outputText rendered="#{newItemMB.isTypeD}" value="Size:" />
<h:inputText id="size" label="size" rendered="#{newItemMB.isTypeD}" />
</h:panelGroup>
</h:form>
</div>
</div>
<footer>
<h:outputText value="asd"></h:outputText>
</footer>
</div>
</h:body>
</html>
我做错什么了吗?您的
类型根本没有设置,因此它将始终是“D”。
即使我更改了SelectOne功能表。
您可以使用setter函数中的System.out.println
自行检查
您需要指定何时激活
此外,execute
属性是提交信息,因此如果您没有键入任何内容并选择食物选项,验证将失败,因此支持bean将不会执行。
如果您尝试在名称和价格字段中键入某个内容并选择食品,您将发现大小字段消失
因此,使用event
并删除execute
像这样:
<f:ajax event="change" render="selectInputPanel"/>
我试过了,效果很好。非常感谢!新年快乐
<f:ajax event="change" render="selectInputPanel"/>