我正在考虑开发网络软件的好方法。 Spring非常适合JDBC的东西,但它也有一个很好的功能,可用于自动填充错误的表单,用于预填充表单的好的支持bean等等。
现在我开始使用JSF,它似乎比Spring更适合做MVC。我喜欢xhtml方法,包括模板,在faces-config.xml中定义这些webflow等等。
但是没有明确的关注点分离,因为这两个框架都可以与表单一起使用,而且我很确定如果Faces或Spring应该制作表单,你将不得不放心。我正在倾向于JSF,但我错过了这些漂亮的错误处理和预填充功能。
JSF可以做这些事吗?我是JSF的新手,所以我不确定它有多强大。
答案 0 :(得分:2)
但我错过了这些漂亮的错误处理和预填充功能。 JSF可以做这些事吗?我是JSF的新手,所以我不确定它是多么强大。
JSF内置验证,例如<h:inputText required="true">
,<f:validateLongRange>
,<f:validateRegex>
以及转换,例如<f:convertDateTime>
,<f:convertNumber>
等(see them all here)。 JSF还支持JSR 303 Bean Validation,它由模型对象上的@NotNull
,@Min
,@Max
,@Pattern
等注释控制。所有验证/转换错误都以绑定到输入元素的<h:message>
或全局<h:messages>
结束。 This JSF 2.0 tutorial深入处理验证。
关于预填充,只需在bean的(post)构造函数中设置所需的模型,或者如果要获取某个ID作为请求参数,则由<f:viewParam>
设置。基本上是:
public class Bean {
private Entity entity;
@EJB
private EntityService entityService;
@PostConstruct
public void init() {
entity = entityService.find(someId);
}
// ...
}