标签: selectonemenu

从primeface的selectOneMenu中选择项目不起作用

我从a获取所选项目时遇到问题selectOneMenu.
这是我的JSF代码:

<h:form id="mainfrm">   
    <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">  
        <h:outputText value="Basic Usage: " />  
        <p:selectOneMenu id="domaine" value="#{projet.currentDomaines}">  
            <f:selectItem itemLabel="Select One" itemValue="" />  
            <f:selectItems value="#{projet.initDomaines()}"  var="d" itemValue="#{d}" itemLabel="#{d.libelleDomaine}" /> 
            <p:ajax update="formEquipe" process="mainfrm" event="change" />
        </p:selectOneMenu>
     </h:panelGrid>     

</h:form>  

<h:form id="formEquipe">  
    <h:panelGrid id="display" columns="2" cellpadding="4">  
        <f:facet name="header">  
            <p:graphicImage value="/images/cars/xxxx.jpg"/>  
        </f:facet>  

        <h:outputText value="Domaine name :" />  
        <h:outputText value="#{projet.currentDomaines.libelleDomaine}"/>  

        <h:outputText value="Director :" />  
        <h:outputText value="#{projet.currentDomaines.nomDirecteur}" />  
    </h:panelGrid>  
</h:form>
Run Code Online (Sandbox Code Playgroud)

似乎一切都是正确的但我必须遗漏一些东西......所以我通过改变当前的Domaines(对象类型Domaines)来测试文本(String)并且它工作了,这里是代码:

<h:form id="mainfrm">   
    <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">  
        <h:outputText value="Basic Usage: " />  
        <p:selectOneMenu id="domaine" value="#{projet.text}">  
            <f:selectItem …
Run Code Online (Sandbox Code Playgroud)

jsf selectonemenu primefaces

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

JSF 2.0 - selectOneMenu在空时默认为0

对于我的项目,我想用h:selectOneMenu实现一个组合框.我读了很多关于如何正确处理selectOneMenu以及如何实现自定义转换器的帖子.组合框应存储来自不同数据库表(名为fk_ID)的ID(),其中约束已到位.到目前为止,一切似乎都按计划运作.现在我的问题:

列fk_ID是可选的,因此组合框中的第一个选项是f:selectItem,没有标记为"choose ..."的值.当我保存表单并更改值时,一切正常,除非我将其设置为"选择...".我得到的错误是约束完整性违规.

我也发现了问题:转换器按预期返回null,但bean接收Long 0.

XHTML:

<h:selectOneMenu value="#{userBean.selectedModel.fk_id}"
    id="combobox">
    <f:selectItem itemLabel="choose ..." />
    <f:selectItems
        value="#{userBean.items}"
        var="item"
        itemLabel="#{item.value}"
        itemValue="#{item.id}"
    />
    <f:converter converterId="userConverter" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

自定义转换器:

@FacesConverter(value = "userConverter")
public class UserConverter implements Converter {
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        if (arg2 != null && !arg2.equals("null"))
            return Long.valueOf(arg2);

        return null;
    }
    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return String.valueOf(arg2);
    }
} …
Run Code Online (Sandbox Code Playgroud)

converter selectonemenu java-ee-6 jsf-2 drop-down-menu

2
推荐指数
1
解决办法
5262
查看次数

使用具有相同视图范围的bean通过h:link传递param(值为null,因此不会添加到URL)

我有一个带有视图范围的bean,并希望在两个不同的页面和第一页之间传递参数,在此链接之前,我在<p:selectOneMenu/>哪里选择测试哪个id应该作为GET参数传递

<p:selectOneMenu value="#{addQuestion.test}" id="tests"
    converter="#{testConverter}" required="true" requiredMessage="Please, choose test">
    <f:selectItem itemLabel="--Select a test--" itemValue="" />
    <f:selectItems value="#{addQuestion.testList}" var="testItem"
        itemValue="#{testItem}" itemLabel="#{testItem.testName}" />
    <p:ajax process="@this"
        listener="#{addQuestion.getQuestionsBySubject()}"
        update="addingQuestionsTable, testId" />
</p:selectOneMenu>
<h:link value="Add new question" outcome="addQuestion">
    <f:param id="testId" name="testId" value="#{addQuestion.test.testIdentifer.testId}"/>
</h:link>
Run Code Online (Sandbox Code Playgroud)

//在第二页

<f:metadata>
    <f:viewParam name="testId"
        value="#{addQuestion.test.testIdentifer.testId}"
        converter="#{testConverter}" required="true" requiredMessage="Invalid page access. Please use a link from within the system."/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

和豆

@ManagedBean(name = "addQuestion")
@ViewScoped
public class AddQuestion implements Serializable {
    private Test test;
    //get
    //set
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图在第二页上获得价值时,我没有什么可以得到表达#{addQuestion.test.testIdentifer.testId}"而且在开发模式中我得到了

值为null,因此不会添加到URL. …

jsf selectonemenu primefaces jsf-2

2
推荐指数
1
解决办法
7109
查看次数

JSF 2 - f:带有Date键控Map的selectItems

以下selectItems来自Session Scoped Map.当用户单击"提交"按钮时,应该在Request Scoped支持bean中设置日期字段并将其显示在页面上.

    <h:selectOneMenu value="#{dropDown.selectedDate}">
        <f:selectItems value="#{mapValues.dateMap.entrySet()}" var="entry" itemLabel="#{entry.value}" itemValue="#{entry.key}" />
    </h:selectOneMenu>
    <h:commandButton value="Submit" />
You selected Date #{dropDown.selectedDate}
Run Code Online (Sandbox Code Playgroud)

但是,收到以下转换错误:

Conversion Error setting value 'Wed Dec 26 15:09:32 EST 2012' for 'null Converter'. 
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会收到这个错误.我尝试在selectOneMenu标记上设置javax.faces.DateTime转换器,但后来又收到了更加神秘的验证错误.

找到一条帖子,建议检查equal()方法是否可用,以及项目选择是否在下拉列表中,在这种情况下两者都应该为true.

我能想到的一个解决方法是将我的地图更改为String键,其中日期作为字符串保存.但这似乎有点矫枉过正.

关于如何使这个设置工作的任何建议?

支持豆:

@Named
@RequestScoped
public class DropDown {

    private Date selectedDate;

    public Date getSelectedDate() {
        return selectedDate;
    }

    public void setSelectedDate(Date selectedDate) {
        this.selectedDate = selectedDate;
    }

}
Run Code Online (Sandbox Code Playgroud)

地图豆:

@Named
@SessionScoped
public class MapValues implements Serializable {

    private Map<Date, String> dateMap; …
Run Code Online (Sandbox Code Playgroud)

java validation converter selectonemenu jsf-2

2
推荐指数
1
解决办法
2363
查看次数

在selectOneMenu中使用枚举失败:"男性"必须可转换为枚举

我是关于开发一个小型的jsf项目,我到了一个状态,我必须在枚举类型中存储一个值,但无法弄清楚如何处理

所以我在这里发布我的问题的一个小描述:

这是枚举类型:

 package com.enumeration;

 import java.io.Serializable;


 public enum Gender implements Serializable{

    Male('M'), Female('F');

    private char description;

   private Gender(char description) {
     this.description = description;
   }

   public char getDescription() {
     return description;
   }
Run Code Online (Sandbox Code Playgroud)

}

xhtml页面:

    <h:panelGrid columns="2">
                <h:outputLabel value="Nom:" for="nom" />
                <h:inputText id="nom" value="#{employee.newEmployee.nom}" title="Nom" />

                <h:outputLabel value="Gender:" for="gender" />
                <h:selectOneMenu value="#{employeeBean.newEmployee.gender}" id="gender">
                     <f:selectItem itemLabel="Male" itemValue="Male" />
                    <f:selectItem itemLabel="Female" itemValue="Female"/>
                </h:selectOneMenu>

            </h:panelGrid>
            <h:commandButton value="ajouter" action="index.xhtml" actionListener="#{employeeBean.ajouter}" />
        </h:form>
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试向数据库添加一个新行时,jsf抛出错误: j_idt7:性别:'男性'必须可转换为枚举.

我在网上做了一些搜索,但无法理解解决方案请帮忙谢谢

jsf enums selectonemenu

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

JSF Selectitems格式标签号

我有一个数字列表(范围500 - 5000,步长500).我想添加一个小数点1000 - > 1.000; 2500 - > 2.500等,但只是标签不能保存为值.我尝试了以下但它没有工作:

<h:selectOneMenu value="#{bean.selectedValue}">
    <f:convertNumber type="currency" locale="de-DE" pattern="#,###" />
    <f:selectItems itemValue="#{bean.selectItemslist}" var="item" itemLabel="#{item.label}" itemValue="#{item.value} />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

但这没有做任何事情:(

尝试了几种模式并包含integerOnly ="true"但似乎没有任何效果:(感谢您的帮助!

jsf converter selectonemenu

2
推荐指数
1
解决办法
1225
查看次数

如何渲染ap:panel,从选择ap:selectonemenu触发?

我正在使用Primefaces 3.4和JSF 2.1,我试图让ap:panel项目出现并消除选择p:oneselectmenu.我有一个p:datatable面板,我想要出现并动态填充,这就是我使用面板的原因.数据表的功能很好,但是面板没有.我尝试将面板上的"呈现"选项与一个变量相关联,该变量随着菜单的每个选择的变化而变化,但没有发生任何事情.我也尝试过,p:outputpanel但没有发生任何事情.所以我尝试使用具有相同操作的按钮但又失败了.这是我的代码:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core">
<h:body>
    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            #{msg.teaching}: #{msg.socialSecurity}
        </ui:define>
        <ui:define name="body">
            <h:form id="form">
                <p:messages id="messages" autoUpdate="true"/>                  
                <p:panel id="selectSocialSecurityPanel" rendered="true">
                    <p:panelGrid>
                        <p:row>
                            <p:column>
                                <p:selectOneMenu value="#{selectOneMenuSocialSecurityTeachingBean.choice}">
                                    <p:ajax update="socialSecurityDataTablePanel, socialSecurityDataTable, toUpdate" listener="#{dataTableSocialSecurityBean.updateTable()}"/>
                                    <f:selectItem itemLabel="#{msg.select}" itemValue=""/>
                                    <f:selectItems value="#{selectOneMenuSocialSecurityTeachingBean.socialSecurityTeachingList}"/>
                                </p:selectOneMenu>
                            </p:column>
                            <p:column>
                                <p:commandButton value="#{msg.find}" actionListener="#{dataTableSocialSecurityBean.updateTable()}" update="socialSecurityDataTablePanel, socialSecurityDataTable, toUpdate" id="button">
                                    <f:ajax render="toUpdate"/>
                                </p:commandButton>
                            </p:column>
                        </p:row>
                    </p:panelGrid>
                </p:panel>                    
                <p:outputPanel id="toUpdate" rendered="#{dataTableSocialSecurityBean.rendered}" autoUpdate="true">
                    <p:panel id="socialSecurityDataTablePanel">
                        <p:dataTable id="socialSecurityDataTable" var="unit" value="#{dataTableSocialSecurityBean.socialSecurityList}">                    
                            <p:columns value="#{dataTableSocialSecurityBean.columns}" var="column" columnIndexVar="colIndex">
                                <f:facet …
Run Code Online (Sandbox Code Playgroud)

jsf panel selectonemenu primefaces

2
推荐指数
1
解决办法
8816
查看次数

如果<p:selectOneMenu>和<h:outputText>的value属性不同,则Primefaces DataTable不会使用下拉框更新显示值

我有一个使用Primefaces 3.5的dataTable,如下所示.

在此输入图像描述

现在我正在使用id 43编辑第二行,如下所示.

在此输入图像描述

当我单击刻度线(最右边的列)时,将对该行进行编辑,如下图所示.

在此输入图像描述

它可以很容易地注意到,国家的名字是从改变xxxxzzz,但该国仍显得预计将被更新为相同AmericaGermany.

实际上,已对数据库进行了更改,但在rowEdit事件完成时它们似乎没有反映到dataTable .

要观察对国家/地区所做的更改,需要重新加载页面.仅当重新加载此页面时,它才会显示正确的数据,如下所示.

在此输入图像描述


这是列出国家/地区下拉框的列.

<p:ajax event="rowEdit" listener="#{stateManagedBean.onRowEdit}" update=":form:dataTable :form:systemMessages :form:messages" process=":form:dataTable :form:systemMessages :form:messages"/>
<p:ajax event="rowEditCancel" listener="#{stateManagedBean.onRowEditCancel}" update=":form:systemMessages :form:messages" process=":form:systemMessages :form:messages"/>


<p:column headerText="Country" sortBy="#{state.country.countryName}" filterBy="#{state.country.countryName}" filterMaxLength="45">                    
    <p:cellEditor>
        <f:facet name="output">
            <h:outputText value="#{state.country.countryName}" />
        </f:facet>
        <f:facet name="input">
            <p:selectOneMenu id="cmbCountryMenu" value="#{state.country.countryId}" rendered="true" editable="false" converter="#{longConverter}" converterMessage="The supplied value is incorrect." required="true" requiredMessage="Select an appropriate option." style="width:100%;">
                <f:selectItems var="country" value="#{stateManagedBean.countries}"  itemLabel="${country.countryName}" itemValue="${country.countryId}" …
Run Code Online (Sandbox Code Playgroud)

jsf selectonemenu primefaces

2
推荐指数
1
解决办法
5621
查看次数

默认为h:selectOneMenu和jsf

我正在尝试为我的h:selectOneMenu设置默认值,但由于某种原因,第一项(见下文)不是第一项选择.第3项是"默认选择"项目.

<h:selectOneMenu value="#{bookBean.discountPercentage}">
    <f:selectItem itemLabel="Please select a value: " noSelectionOption="true" />
    <f:selectItems value="#{bookBean.paymentMethods}" var="paymentMethod"
                   itemValue="#{paymentMethod.discountPercentage}"
                   itemLabel="#{paymentMethod}" required="true"/>
    <f:ajax listener="#{bookBean.setDiscountValue}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

因此,"请选择一个值"必须是列表中的第一项(它是),并且在打开te页面时必须是选定的值,而不是.

jsf selectonemenu jsf-2

2
推荐指数
1
解决办法
7633
查看次数

添加链接以在JSF/Primefaces selectonemenu中动态插入元素

是否可以将项目动态插入到选择的一个菜单中:

在此输入图像描述

目前,用户必须转到另一个可以添加作业的页面:

在此输入图像描述

然后导航回第一个视图,以使用新添加的选择项查看更新的下拉菜单.更有效的选择是允许用户在此视图中直接插入,然后在下拉列表中选择它.

jsf selectonemenu primefaces

2
推荐指数
1
解决办法
1570
查看次数