【问题标题】:Spring JSF and these wrongly filled formsSpring JSF 和这些错误填写的表格
【发布时间】:2011-11-09 21:40:03
【问题描述】:

我正在考虑开发网络软件的好方法。 Spring 非常适合 JDBC 的东西,但它也有一个很好的功能,可以自动完成错误的表单,很好的支持 bean 用于预填充表单等等。

现在我从 JSF 开始,它似乎比 Spring 更适合做 MVC。我喜欢 xhtml 方法,包括模板,在 faces-config.xml 中定义这些 webflow 等等。

但是没有明确的关注点分离,因为这两个框架都可以处理表单,我很确定如果 Faces 或 Spring 应该制作表单,你必须做出决定。我倾向于 JSF,但我错过了这些漂亮的错误处理和预填充功能。

JSF 也可以做这些事情吗?我是 JSF 的新手,所以我不确定它有多强大。

【问题讨论】:

    标签: java forms spring model-view-controller jsf


    【解决方案1】:

    但我缺少这些漂亮的错误处理和预填充功能。 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);
        }
    
        // ...
    }
    

    【讨论】:

    • 所以MVC中不再需要Spring了? :-)
    • Java EE 6 附带 EJB 3.1、CDI 和 Bean Validation,它们都可以取代 Spring。 Spring 在 J2EE 时代成长,当时 EJB2 很糟糕,J2EE 不提供依赖注入和验证。 Sun/Oracle 从中吸取了教训,并为 Java EE 5 和 6 添加了类似的 API,以便容器开箱即用地支持它。另见stackoverflow.com/questions/2499323/jee6-vs-spring-3-stack
    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多