我正在使用JSF设置表单(这是我的新手),并且Validation Error: Value is not valid
在其中一个字段上收到消息。该字段实际上是一个具有自定义转换器的单独对象(如下文所示)。
这是我所拥有的(删除了不相关的代码):
我有一Citation
堂课:
@ManagedBean(name="citation")
public class Citation {
private int id;
private Status status;
// getters and setters
}
我也有一个Status
您在Citation
该类中引用的类:
@ManagedBean(name="status")
public class Status {
private int id;
private String name;
// getters and setters
public List<Status> getAllStatuses() {
Session session = HibernateUtil.getCurrentSession();
session.beginTransaction();
session.clear();
Query query = session.createQuery("from Status");
List<Status> statuses = query.list();
try {
session.getTransaction().commit();
} catch (HibernateException e) {
// TODO: handle exception
session.getTransaction().rollback();
}
return statuses;
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (!(obj instanceof Status)) return false;
if (this.id == ((Status)obj).getId()) {
return true;
} else {
return false;
}
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
那么对于我的表格,我有:
<h:selectOneMenu id="citation_status" value="#{citation.status}">
<f:selectItems value="#{status.allStatuses} var="s" itemValue="#{s.id}" itemLabel="#{s.name}" />
</h:selectOneMenu>
<h:message for="citation_status" />
最后,对于我的转换器,我有:
@FacesConverter(forClass=Status.class)
public class StatusConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// uses Hibernate to get the Status object (using a breakpoint in Eclipse, I have verified that this works)
// I can post this code if needed, but just trying to keep it short :)
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return String.valueOf(((Status) value).getId());
}
}
现在,当我进入表单并提交时,我将获得Validation Error
状态旁边的内容。我在这方面还很新,感谢@BalusC,我一直很远。
任何帮助是极大的赞赏。
验证错误:值无效
如果是<h:selectOneMenu>
,则只要选定的项目与列表中可用的任何项目都不匹配,就会在出现错误时得到此提示。即selectedItem.equals(selectItem)
从未归还true
任何物品。
由于它显然是自定义对象(Status
类),您是否正确实现了它Object#equals()
(和#hashCode()
)?您可以根据需要让IDE(Eclipse
/ Netbeans)自动生成它们。
更新
:仔细查看代码后,结果发现您实际上是在提交#{s.id}
而不是#{s}
(整个Status
对象)提交。相应地修复itemValue
它,它应该可以工作(如果equals()
仍在正常工作)。
主要内容:JSF自定义转换器实例我们可以在JSF中创建自己的自定义转换器。 以下列表是我们可以在JSF中创建自定义转换器的步骤。 通过实现接口创建一个转换器类。 实现上述接口的和方法。 使用注解为自定义转换器分配唯一的ID。 JSF自定义转换器实例 打开 NetBeans IDE 创建一个Web工程:CustomConverter,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文
主要内容:自定义验证器类实例我们可以在JSF中创建自己的自定义验证器。以下列表是在JSF中创建自定义验证器的步骤。 通过实现接口创建一个验证器类。 实现上面接口的方法。 使用注释为自定义验证器分配唯一的ID。 自定义验证器类实例 打开 NetBeans IDE 创建一个Web工程:CustomValidator,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result
我为jsf创建了一个自定义转换器。getAsObject()工作正常,但getAsString()返回异常。我不确定问题出在哪里,我尝试过用不同的方式将对象转换为字符串,但它不断返回异常。 这是我的代码: 这是Product类(为简单起见排除了getter/Setters/equals()/hash()): 这是stack我得到的: 这是我使用转换器的jsf:
问题内容: 我想自定义弹簧验证错误 但是我做不到。要采取的步骤是什么? 问题答案: 该JSR 303的默认邮件插补算法,您可以通过提供捆绑命名的资源来定制信息。在类路径中创建一个文件,其中包含: 这将更改@Size约束的默认消息,因此您应该使用@Size约束而不是特定于Hibernate的@Length约束。 您可以更改特定约束实例的消息,而不是更改所有约束的默认消息。message在约束上设置属
我正在尝试编写一个自定义bean验证器,并根据用户界面上的语言环境显示验证消息。 为此,我创建了一个验证器,如下所示: 我还注册了messageSource和validator bean: 在我的控制器中,我使用initBinder注册我的验证器: 不过,验证错误消息在用户界面上显示为{myproject.myclass.validation.name}。即使我设置了LocalValidatorF
问题内容: 我创建了一个自定义SSLSocketFactory类,并将其设置如下 从Eclipse Dev Environment运行并在命令提示符下将其作为Jar文件运行时,它可以正常工作。但是,当我将其包装在服务包装中并作为Windows Service启动时,它不起作用。我收到以下异常, 任何帮助??? 问题答案: 自从我发布此问题以来已经很长时间了。由于这篇文章没有任何答案,而且似乎也有一