我有一个<p:dataTable>懒惰的负载.在其中两列中,<p:selectOneMenu>每列都有一个.
第一列包含国家/地区列表,第二列包含数据库中的状态列表.
我想第二个菜单显示在只有那些状态(包含州列表的)每一行对应于该国在第一菜单中的数据表的每一行数据表.
在编辑模式下,当其菜单中的国家/地区更改时,应在其当前行的菜单中填充与该国家/地区对应的状态.
如何在数据表的每一行中加载与其国家/地区对应的状态列表?
数据表中的这两列是不完整的,因为我对如何实现这一点没有一个确切的想法.
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.state.country.countryName}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{row.state.country}">
<f:selectItems var="country"
value="#{cityBean.selectedCountries}"
itemLabel="#{country.countryName}"
itemValue="#{country}"/>
<p:ajax update="states" listener="#{cityBean.getStates}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.state.stateName}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu id="states">
<f:selectItems var="state"
value="#{cityBean.selectedStates}"
itemLabel="#{state.stateName}"
itemValue="#{state}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
Run Code Online (Sandbox Code Playgroud)
cityBean.selectedCountries检索所有必需的国家,但cityBean.selectedStates也从数据库中检索所有不必要的状态,并且应该修改这些状态以仅检索与另一个菜单中的国家相对应的那些状态.
我怎么能从这里开始?
我想使用primefaces 展示中的示例来对selectOneMenu中的selectItems进行分组:
<h:outputText value="Grouping: " />
<p:selectOneMenu value="#{formBean.car}">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{formBean.cars}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
我的问题是,没有实现bean.现在我不知道,如何在getCars()方法中实现selectItems的分组.我找不到任何其他的例子.
我需要在Primefaces中显示不同颜色的选项.
我有一个带有动态项目的selectOneMenu(列表)
<p:selectOneMenu id="carMenu" style="margin-top:4px;"
value="#{Bean.selectedCar}" effect="fade"
autoupdate="true">
<f:selectItems id="carsId"
value="#{myBean.allCars}" var="carItems"
itemLabel="#{carItems.name}" itemValue="#{carItems}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
private List<Cars> allCars;
Run Code Online (Sandbox Code Playgroud)
如果汽车出售,我需要显示选项RED的背景,否则黑色.在我的模型中,我得到了一个属性,如果汽车出售与否,它会给我一个值(布尔售出).
如何在selectOneMenu中设置颜色?
我正在使用JSF 2.0,JBoss 7.1.1 Final,我遇到了selectOneMenu的问题.我希望能够将托管bean中的字段设置为true/false/null.因此,我创建了以下selectOneMenu:
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
现在,如果我选择'Any ..',它将为registrationComplete字段(布尔值)分配"false".所以null被解释为false.我还尝试在selectItem中使用布尔值,即:
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
我还在faces-config中注册了转换器,如下所示:
<converter>
<converter-id>booleanConverter</converter-id>
<converter-class>javax.faces.convert.BooleanConverter</converter-class>
</converter>
Run Code Online (Sandbox Code Playgroud)
并试图使用它:
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
<f:converter converterId="booleanConverter"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
但是所有这些尝试都导致了相同的行为 - 当选择空值时,它被解释为false.
我调试了它,在堆栈跟踪中我找到了它发生的位置.在AstValue.setValue(EvaluationContext, Object) line: 204
它叫
ELSupport.coerceToType(value, targetClass)
Run Code Online (Sandbox Code Playgroud)
value参数为null,targetClass为Boolean.然后,此coerceToType方法返回false.
任何想法如何解决这个问题?谢谢!
例如,f:selectItems组件在某些版本的JSF中不支持title属性.
是否可以使用JSFC替换纯HTML对应的JSF组件并执行类似的操作?
<select jsfc="h:selectOneMenu" value="#{cc.data}">
<option jsfc="f:selectItems" value="${cc.listItems}" var="item" title="#{item.tooltip}"></option>
</select>
Run Code Online (Sandbox Code Playgroud)
代替
<h:selectOneMenu value="#{cc.data}">
<f:selectItems value="#{cc.listItems}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
完全如此,用上面的替换后者,我得到了"<f:converter> Parent not an instance of ValueHolder: javax.faces.component.html.HtmlPanelGroup"Facelet TagExceptions
在MySQL数据库中有三个表category,sub_category和brand(制造商)其中category是其余的父,即sub_category和brand.我希望,菜单之间的关系可以根据表关系更清晰.
所有三个<p:selectOneMenu>都被放置<p:dataTable>在三个相应的列中,如下所示<p:column>.我忽略<p:column>,<p:cellEditor>,<f:facet name="output">,<f:facet name="input">,<p:rowEditor>和所有这些滋扰赘述.
row对应于这是一个JPA管理实体product在这种情况下,通过指定var="row"在<p:dataTable>关联的.
这是实际的问号:当一个项目(第一个)null的值categoryList被选择(母公司),其子清单subCategoryList和brandList应该休息了个空.
分类清单:
<p:selectOneMenu id="categoryList"
value="#{row.category}"
required="#{param['javax.faces.source'] ne component.clientId}">
<f:selectItem itemLabel="Select"
itemValue="#{null}"/>
<!-- When this item is selected, its children below should be reset to empty. -->
<f:selectItems var="category"
value="#{productManagedBean.categories}"
itemLabel="Select"
itemValue="#{category}"/> …Run Code Online (Sandbox Code Playgroud) 我无法在h:selectOneMenu不验证其他输入的情况下立即提交.这是代码:
<h:selectOneMenu value="#{a.avalue}" onchange="submit()" immediate="true">
<f:selectItems value="#{b.bvalue}" var="k" itemLabel="#{k.asdad}"
itemValue="#{k.asdad}"/>
</h:selectOneMenu>
<h:inputText id="sada" value="#{c.cvalue}" required="true"
requiredMessage="*asdadadadasd"
validatorMessage="*asdsadadadadad">
<f:validateLength maximum="80"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
当我更改菜单值时,其他输入的验证器仍然会激活.我怎么能否认呢?
在我的应用程序中,我有三个下拉菜单(p:selectOneMenu),例如A,B,C.其中两个是依赖的,比如B和C.通过更改BI的值,我动态地将值加载到C.还有一个文本框.当on-change事件从这三个下拉列表触发时,文本框的值由ajax生成.
这是xhtml:
<p:selectOneMenu id="customerMenu" value="#{adminController.activityDTO.customerId}" required="true" label="Customer Name" style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.customers}" var="customer" itemLabel="#{customer.customerName}" itemValue="#{customer.customerId}" />
<p:ajax listener="#{adminController.generateActivityName}" update="activityId" />
</p:selectOneMenu>
<p:selectOneMenu id="activityTypeMenu" value="#{adminController.activityDTO.activityParentType}" required="true" label="Activity Type"
style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.activityTypes}" var="activityType" itemLabel="#{activityType.parent}" itemValue="#{activityType.parent}" />
<p:ajax listener="#{adminController.updateDependentActivity}" update="activitySubType" />
</p:selectOneMenu>
<p:selectOneMenu id="activitySubTypeMenu" value="#{adminController.activityDTO.activitySubType}" required="true" label="Activity Sub Type"
style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.activitySubTypes}" var="activityType" itemLabel="#{activityType.name}" itemValue="#{activityType.id}" />
<p:ajax listener="#{adminController.generateActivityId}" update="activityId" />
</p:selectOneMenu>
<p:inputText id="activityId" autocomplete="off" …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作4个相关菜单.
当用户从第一个菜单中选择项目时,第二个菜单将显示相关数据,当用户从第二个菜单中选择项目时,第三个菜单将显示相关数据,依此类推.
用户将仅在第一个菜单上看到项目,而其他项目将为空白.如果他在第一个菜单上选择一个项目,则第二个菜单将显示数据,但第三个和第四个将保持空白,依此类推.用户最终必须从所有4个菜单中选择条目.
<h:selectOneMenu id="first" value="#{nodes.selectState"}>
<f:selectItems value="#{nodes.stateList}"/>
<f:ajax render="second">
</h:selectOneMenu>
<h:selectOneMenu id="second" value="#{nodes.selectCity"}>
<f:selectItems value="#{nodes.cityList}"/>
<f:ajax render="third">
</h:selectOneMenu>
<h:selectOneMenu id="third" value="#{nodes.selectRegion"}>
<f:selectItems value="#{nodes.regionList}"/>
<f:ajax render="fourth">
</h:selectOneMenu>
<h:selectOneMenu id="fourth" value="#{nodes.selectStation"}>
<f:selectItems value="#{nodes.stationList}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
节点Java类
private String selectState; //+setters, getters
private String selectCity; //+setters, getters
private String selectRegion; //+setters, getters
private String selectStation; //+setters, getters
private List<SelectItem> stateList; //+setters, getters
private List<SelectItem> cityList; //+setters, getters
private List<SelectItem> regionList; //+setters, getters
private List<SelectItem> stationList; //+setters, getters
public getStateList(){
stateList= new ArrayList<SelectItem>();
stateList.add(new …Run Code Online (Sandbox Code Playgroud) 我的要求是这样的.我有一个带有一些值的selectMenu(例如:工程,医学,法律等......).假设如果我在下拉列表中选择工程,我想要另一个动态创建的下拉菜单,其中包含与工程相关的值(例如:电子,计算机,电气等......).我如何在JSF 2.0中实现这一目标?
selectonemenu ×10
jsf ×7
jsf-2 ×6
primefaces ×5
ajax-update ×1
boolean ×1
cascading ×1
el ×1
hierarchy ×1
jsf-2.2 ×1
tooltip ×1