相关疑难解决方法(0)

验证错误:值无效

我有一个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万
查看次数

primefaces selectOneMenu无法正常工作

我在这个奇怪的问题上失去了几天,我仔细检查了一切,但我的selectOneMenu根本不起作用,我无法理解为什么.

所以这是我的代码:

我的jsf

<p:selectOneMenu id="entityType"  
      value="#{entityBean.entity.type}" 
      style="width:240px;" 
      converter="entityTypeConverter"
      valueChangeListener="#{entityBean.entityTypeListener}"
      required="true">
      <f:selectItems value="#{entityBean.typeList}"
              var="et"
              itemLabel="#{et.name}"
              itemValue="#{et}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

我的转换器:

    @FacesConverter("entityTypeConverter")
    public class EntityTypeConverter implements Converter {
        public Object getAsObject(FacesContext context, UIComponent component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            Long id = Long.parseLong(value);

            return EntityType.findEntityType(id);
        }

        public String getAsString(FacesContext context, UIComponent component, Object value) {

            return value instanceof EntityType ? ((EntityType) value).getId().toString() : "";
        }
    }
Run Code Online (Sandbox Code Playgroud)

它在我创建时按预期工作(它传递所选值),但是当我尝试编辑实体时,实际上从未选择所选类型.我尝试使用primefaces 3.1.1和3.2但在查看/编辑模式下我无法获得所选值.

我究竟做错了什么?

提前致谢!

selectonemenu primefaces jsf-2

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

标签 统计

selectonemenu ×3

jsf ×2

converter ×1

database ×1

jpa ×1

jsf-2 ×1

primefaces ×1

validation ×1