为了账号安全,请及时绑定邮箱和手机立即绑定

验证错误:值无效

验证错误:值无效

牧羊人nacy 2019-05-27 11:16:10
验证错误:值无效我有一个ap:selectOneMenu的问题,无论我做什么我都无法让JSF调用JPA实体上的setter。JSF验证失败,显示以下消息:form:location:验证错误:值无效我有这个工作在几个相同类型的其他类(即,连接表类),但不能为我的生活让这一个工作。如果有人可以针对此类问题提出一些故障排除/调试技巧,我们将不胜感激。使用日志语句我已经验证了以下内容:在Conveter将返回正确的,非null数值。我的JPA实体中没有Bean验证。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>转换器:@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, "Converted {0} to {1}" , new Object[] {value, location});             return location;         } catch (NumberFormatException e) {             return new Location();         }     }     @Override     public String getAsString(FacesContext context, UIComponent component, Object value) {         if (value == null || value.toString().isEmpty() || !(value instanceof Location))             return "";         return String.valueOf(((Location) value).getId());     }    }控制台输出:// Getter methodINFO: Current value=ejb.locations.Location[id=null, name=null, latitude=0.0, longitude=0.0] // Session BeanINFO: Finding ejb.locations.Location with id=3 
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

在我的情况下,我忘了实现正确的get / set方法。之所以发生这种情况,是因为我在开发过程中改变了许多属性。

如果没有正确的get方法,JSF无法恢复您选择的项目,并且发生了BalusC在其答案第1项中所说的内容:

1。可用项目列表中缺少所选项目。如果可用项的列表由请求作用域bean提供,而后者请求未正确重新初始化,或者在getter方法中错误地执行业务作业,导致它以某种方式返回不同的列表,则会发生这种情况。


查看完整回答
反对 回复 2019-05-27
  • 3 回答
  • 0 关注
  • 631 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信