标签: selectonemenu

如何在f中使用枚举值:selectItem(s)

我想制作一个selectOneMenu下拉列表,以便我可以在我的问题上选择一个状态.是否可以使f:selectItem更灵活,考虑到如果枚举的顺序发生变化会发生什么,以及列表是否很大?我能做得更好吗?是否可以自动"选择"问题所具有的项目?

恩类

public enum Status {
    SUBMITTED,
    REJECTED,
    APPROVED
}
Run Code Online (Sandbox Code Playgroud)

问题实体

@Enumerated(EnumType.STRING)
private Status status;
Run Code Online (Sandbox Code Playgroud)

JSF

<div class="field">
    <h:outputLabel for="questionStatus" value="Status" />
    <h:selectOneMenu id="questionStatus" value="#{bean.question.status}" >
        <f:selectItem itemLabel="Submitted" itemValue="0" />
        <f:selectItem itemLabel="Rejected" itemValue="1" />
        <f:selectItem itemLabel="Approved" itemValue="2" />
    </h:selectOneMenu>
    <hr />
</div>
Run Code Online (Sandbox Code Playgroud)

jsf enums selectonemenu jsf-2

100
推荐指数
2
解决办法
8万
查看次数

验证错误:值无效

我有一个ap:selectOneMenu的问题,无论我做什么我都无法让JSF调用JPA实体上的setter.JSF验证失败,显示以下消息:

form:location:验证错误:值无效

我有这个工作在几个相同类型的其他类(即,连接表类),但不能为我的生活让这一个工作.

如果有人可以针对此类问题提出一些故障排除/调试技巧,我们将不胜感激.

使用日志语句我已经验证了以下内容:

  1. Conveter将返回正确的,非null数值.
  2. 我的JPA实体中没有Bean验证.
  3. setLocation(Location location)永远不会调用setter .

这是我能做的最简单的例子,它根本不起作用:

<h:body>
    <h:form id="form">
        <p:messages id="messages" autoUpdate="true" />
        <p:selectOneMenu id="location" value="#{locationStockList.selected.location}" converter="locationConverter">
            <p:ajax event="change" update=":form:lblLocation"/>
            <f:selectItems value="#{locationStockList.locationSelection}"/>
        </p:selectOneMenu>
    </h:form>
</h:body>
Run Code Online (Sandbox Code Playgroud)

转换器:

@FacesConverter(forClass=Location.class, value="locationConverter")
public class LocationConverter implements Converter, Serializable {
    private static final Logger logger = Logger.getLogger(LocationConverter.class.getName());

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value.isEmpty())
            return null;
        try {
            Long id = Long.parseLong(value);
            Location location = ((LocationManagedBean) context.getApplication().getELResolver().getValue(context.getELContext(), null, "location")).find(id);
            logger.log(Level.SEVERE, …
Run Code Online (Sandbox Code Playgroud)

validation jsf jpa converter selectonemenu

77
推荐指数
1
解决办法
7万
查看次数

如何从数据库中填充h:selectOneMenu的选项?

我正在创建一个Web应用程序,您必须从DB中读取对象/实体列表并在JSF中填充它<h:selectOneMenu>.我无法对此进行编码.有人可以告诉我该怎么做吗?

我知道如何List<User>从数据库中获取数据.我需要知道的是,如何填充此列表<h:selectOneMenu>.

<h:selectOneMenu value="#{bean.name}">
    ...?
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

database jsf selectonemenu

69
推荐指数
2
解决办法
14万
查看次数

在JSF中为selectOneMenu添加"未选择"选项的最佳方法

我想知道什么是允许用户在selectOneMenu中选择任何内容的最佳或最简单的方法.

我的例子:我有一个注册用户列表,管理员应该能够按一些标准过滤显示的用户列表.这些标准,如usertype(employee,customer,...)可以由selectOneMenus选择,如下所示:

<h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}">
<f:selectItems value={myBean.usertypes}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

当相应的selectOneMenu由使用转换器的POJO列表支持时,如何将项添加到列表中,表明用户没有选择任何特定项?目前我有一个虚拟的usertype对象显示标签"---",但这在我的应用程序的其他方面引起了几个问题,我不认为这是最好的解决方案.

jsf selectonemenu

43
推荐指数
2
解决办法
5万
查看次数

'null Converter'的转换错误设置值 - 为什么我需要JSF中的转换器?

我有理解如何有效地使用JSF 2中的选择和POJO /实体.例如,我试图Warehouse通过下面的下拉列表选择一个实体:

<h:selectOneMenu value="#{bean.selectedWarehouse}">
    <f:selectItem itemLabel="Choose one .." itemValue="#{null}" />
    <f:selectItems value="#{bean.availableWarehouses}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

以下托管bean:

@Named
@ViewScoped
public class Bean {

    private Warehouse selectedWarehouse;
    private List<SelectItem> availableWarehouses;

    // ...

    @PostConstruct
    public void init() {
        // ...

        availableWarehouses = new ArrayList<>();

        for (Warehouse warehouse : warehouseService.listAll()) {
            availableWarehouses.add(new SelectItem(warehouse, warehouse.getName()));
        }
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,我使用整个Warehouse实体作为值SelectItem.

当我提交表单时,会失败并显示以下消息:

'null Converter'的转换错误设置值'com.example.Warehouse@cafebabe'.

我希望Warehouse当我将它包装在一个中时,JSF可以将正确的对象设置为我的托管bean SelectItem.将我的实体包装在里面SelectItem意味着跳过Converter为我的实体创建一个.

Converter每当我想在我的实体中使用实体时,我真的必须使用<h:selectOneMenu>吗?JSF应该可以从可用项列表中提取所选项.如果我真的必须使用转换器,那么实际的方法是什么?到目前为止,我想到了这个:

  1. Converter为实体创建实现. …

jsf converter selectonemenu jsf-2

38
推荐指数
1
解决办法
5万
查看次数

<h:selectOneMenu>中<f:selectItem>的默认选择

如何使默认选项<f:selectItem>之内<h:selectOneMenu>

这是必需的,当加载页面时,已经选择了特定的"20"下拉项.

  <h:selectOneMenu value="#{fileSearchCriteriaOut.recordsPerPage}"  >            
               <f:selectItem itemLabel="5" itemValue="5" />
               <f:selectItem itemLabel="10" itemValue="10" />
               <f:selectItem itemLabel="20" itemValue="20" selected="true"/>
  </h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

这四个不起作用:

<f:selectItem itemLabel="20" selected="true"/>
<f:selectItem itemLabel="20" selected="selected"/>
<f:selectItem itemLabel="20" checked="checked"/>
<f:selectItem itemLabel="20" checked="true"/>
Run Code Online (Sandbox Code Playgroud)

jsf default-value selectonemenu

27
推荐指数
2
解决办法
7万
查看次数

在ap:selectOneMenu中使用"请选择"f:selectItem,其中包含null /空值

我正在填充<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)

jsf converter selectonemenu primefaces jsf-2.2

26
推荐指数
2
解决办法
5万
查看次数

如何从f:selectItems获取标签和值

我正在开发一个JSF页面,其中包含一个基于以下内容的下拉列表List<SelectItem>:

<h:selectOneMenu value="#{bean.selectedItem}">
    <f:selectItems value="#{bean.availableItems}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

我需要得到双方当前选定项的值和标签.现在我只得到价值.我怎样才能获得标签?

jsf label selectonemenu

18
推荐指数
1
解决办法
9万
查看次数

单击h:selectOneMenu调用操作方法

我有以下下拉列表:

<h:selectOneMenu value="#{user.favCoffee3}"  onclick="">
   <f:selectItems value="#{user.favCoffee3Value}" var="c"
   itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

我想通过下拉列表项单击从bean启动一些方法.我怎样才能实现它?

jsf action selectonemenu

15
推荐指数
1
解决办法
4万
查看次数

p:selectOneMenu没有在bean中设置值

快问.在使用SelectOneMenu之前,我没有想到这一点.这是我的代码.

<h:outputLabel for="listaRegiones" value="Región: " />
<p:selectOneMenu id="listaRegiones" value="#{nuevaProvincia.regionSelect}" required="true">
    <f:selectItems value="#{nuevaProvincia.regiones}" />
</p:selectOneMenu>
<p:message for="listaRegiones" />
Run Code Online (Sandbox Code Playgroud)

这是我的支持豆.

@ManagedBean(name="nuevaProvincia")
@ViewScoped
public class nuevaProvincia implements Serializable {

    public static final long serialVersionUID = 1L;

    public nuevaProvincia() throws DAOException {
        this.provincia = new Provincia();
        this.regiones = new ArrayList<SelectItem>();
        ArrayList<Region> regs = new ArrayList<Region>();
        try
        {
            regs = Region.obtenerRegiones();
        }
        catch(DAOException e)
        {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Hubo un error: "+e.getMessage(), "Hubo un error: "+e.getMessage()));
        }
        if(regs.size()>0)
        {
            for(Region r : regs)
            {
                SelectItem …
Run Code Online (Sandbox Code Playgroud)

jsf updatemodel selectonemenu primefaces

14
推荐指数
1
解决办法
3万
查看次数