我正在填充<p:selectOneMenu/>数据库,如下所示.
<p:selectOneMenu id="cmbCountry"
value="#{bean.country}"
required="true"
converter="#{countryConverter}">
<f:selectItem itemLabel="Select" itemValue="#{null}"/>
<f:selectItems var="country"
value="#{bean.countries}"
itemLabel="#{country.countryName}"
itemValue="#{country}"/>
<p:ajax update="anotherMenu" listener=/>
</p:selectOneMenu>
<p:message for="cmbCountry"/>
Run Code Online (Sandbox Code Playgroud)
加载此页面时,默认选择的选项是,
<f:selectItem itemLabel="Select" itemValue="#{null}"/>
Run Code Online (Sandbox Code Playgroud)
转换器:
@ManagedBean
@ApplicationScoped
public final class CountryConverter implements Converter {
@EJB
private final Service service = null;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try {
//Returns the item label of <f:selectItem>
System.out.println("value = " + value);
if (!StringUtils.isNotBlank(value)) {
return null;
} // Makes no difference, if removed.
long parsedValue …Run Code Online (Sandbox Code Playgroud) 我正在创建一个javax.faces.model.SelectItem(在一个bean中)的List 用于a h:selectManyCheckbox但我无法弄清楚如何SelectItem选择.
这该怎么做?一定是可能的,对吧?......
public List<SelectItem> getPlayerList(String teamName) {
List<SelectItem> list = new ArrayList<SelectItem>();
TeamPage team = (TeamPage) pm.findByName(teamName);
List<PlayerPage> players = pm.findAllPlayerPages();
for (PlayerPage player : players) {
boolean isMember = false;
if (team.getPlayerPages().contains(player)) {
isMember = true;
}
SelectItem item;
if (isMember) {
// TODO: Make SelectItem selected???
item = null;
} else {
item = new SelectItem(player.getId(), createListItemLabel(player), "", false, false);
}
list.add(item);
}
return list;
}
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) 我有以下问题.当我单击"Enviar"按钮时,这将调用与selectOneMenu相关联的另一个方法(在属性valueChangeListener中称为"validarSelect"),然后调用此按钮在属性actionListener中关联的方法"validarBoton".我想知道,为什么会这样.我希望valueChangeListener不会被调用,因为我没有更改下拉列表.
这是我的页面JSF:
<?xml version='1.0' encoding='windows-1252'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<html xmlns="http://www.w3.org/1999/xhtml">
<h:head></h:head>
<h:body>
<h:form>
<h:commandButton value="Enviar..." id="validar" actionListener="#{Domiciliacion.validarBoton}"/>
<h:selectOneMenu valueChangeListener="#{Domiciliacion.validarSelect}"
binding="#{Domiciliacion.selectCombo}">
<f:selectItems value="#{Domiciliacion.lista}"/>
<f:ajax event="valueChange" render="@this"/>
</h:selectOneMenu>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这就是ManagedBean:
package domiciliaciontest;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
@ManagedBean(name = "Domiciliacion")
@ViewScoped
public class MB0001 {
private HtmlSelectOneMenu selectCombo;
private List<String> lista = new ArrayList<String>();
public MB0001() {
super();
System.out.println("Entro al constructor..."); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Primefaces 5.2 selectOneMenu来显示图像及其文件名.这就是我的xhtml目前的样子:
<h:form>
<h:panelGrid id="createPanelGrid" columns="2">
<p:outputLabel value="Service Logo:" />
<p:selectOneMenu value="#{imageBean.selectedImage}" var="l">
<f:selectItem itemLabel="Select a logo" itemValue="" />
<f:selectItems value="#{imageBean.imageList}" var="logo" itemLabel="#{logo}" itemValue="#{logo}" />
<p:column>
<p:graphicImage value="#{imageBean.imageFolder}/#{l}" style="max-width:50px;max-height:50px;" />
</p:column>
<p:column>#{l}</p:column>
</p:selectOneMenu>
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
ManagedBean(imageBean)有
public List<String> getImageList () {
List<String> imageList = new ArrayList<String>();
File[] files = absoluteImageFolder.listFiles();
for (File file : files) {
imageList.add(file.getName());
}
return imageList;
}
Run Code Online (Sandbox Code Playgroud)
和
private String selectedImage;
public String getSelectedImage() {
return selectedImage;
}
public void setSelectedImage(String selectedImage) {
this.selectedImage = selectedImage; …Run Code Online (Sandbox Code Playgroud) 我是JSF的新手,我noSelectionOption在JSF 2.0中遇到了这个属性.
我不明白这个属性的目的.根据描述,当需要选择并且用户选择noSelectionOption导致验证错误时使用它.
那么,如果noSelectionOption = true那时用户可以选择noSelectionOption并绕过该列表或菜单?
或者,如果noSelectionOption = true那时用户必须选择其中一个项目,如果他选择noSelectionOption,则会发生验证错误?
noSelectionOption如果是真的,用户可以将其视为列表或菜单下的项目之一吗?
请帮助我理解这背后的逻辑.
我想在选择之后禁用一些primefaces组件,p:selectOneMenu但是当我选择没有选择选项时它仍然被禁用
<p:outputLabel value="Manager" style="color:white;font-weight: bold;" />
<p:selectOneMenu id="manager" value="#{employeeMB.selectedManager}" immediate="true">
<f:selectItem itemLabel="Selectionner..." noSelectionOption="true"/>
<f:selectItems value="#{employeeMB.managers}" />
<p:ajax update="managerSelect role" />
</p:selectOneMenu>
<p:outputLabel value="Est un Manager"
style="color:white;font-weight: bold;" />
<p:selectBooleanCheckbox id="managerSelect"
value="#{employeeMB.employee.isManager}"
disabled="#{employeeMB.selectedManager != null}" />
<p:outputLabel for="role" value="Role Utilisateur" style="color:white;font-weight: bold;" />
<p:selectManyCheckbox id="role" value="#{employeeMB.selectedRoles}">
<f:selectItem itemLabel="Employée" itemValue="ROLE_EMPLOYEE" />
<f:selectItem itemLabel="Manager" itemValue="ROLE_MANAGER" itemDisabled="#{employeeMB.selectedManager != null}"/>
<f:selectItem itemLabel="RH" itemValue="ROLE_RH" itemDisabled="#{employeeMB.selectedManager != null}"/>
</p:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud) jsf ×6
jsf-2 ×4
primefaces ×3
ajax-update ×1
cascading ×1
converter ×1
hierarchy ×1
jsf-2.2 ×1