JSF可以实例化不可变对象吗?

JSF可以实例化不可变对象吗?,jsf,immutability,jsf-2.2,Jsf,Immutability,Jsf 2.2,我有一个项目与VRaptor,一个MVC框架。我的DTO是不可变的,如下所示: public class City { private final Long id; private final String name; public City(Long id, String name) { this.id = id; this.name = name; } //

我有一个项目与VRaptor,一个MVC框架。我的DTO是不可变的,如下所示:

 public class City {
        private final Long id;
        private final String name;

        public City(Long id, String name) {
            this.id = id;
            this.name = name;
        }

        // getters
    }
现在我正在迁移这个应用程序以使用JSF。但正如我所读到的,JSF需要所有属性的getter和setter


有办法通过创建转换器或其他方法来改变这种行为?

如果不通过输入写入这些属性,就不会有任何问题。
我能想到的唯一一种情况是@ManagedProperty。对于那些您将需要setter和getter方法,但这将应用于托管bean,而不是您的TOs。

典型的用法是什么?B/c如果框架试图代理DTO,则缺少默认构造函数将是一个问题。@mabi,这只是一个设计决策。我只使用DTO从页面获取输入的数据。因此,没有理由使用可变对象。在我的示例中,使用City DTO类,城市永远不会改变,因此没有设置器。城市一旦建立,就永远不会改变。像vraptor这样的框架只能使用构造函数进行实例化。所以我的目标是在JSF中使用相同的行为。事情是,JSF或者更确切地说,EL利用类上的反射来设置它的值。它需要一个无参数构造函数来实现这一点。从概念上讲,JSF是有状态的,为用户在公开的JSF对象上工作建模。因此,虽然在后端系统中有这样一个DTO是可能的,但Adam Bien没有必要,但在前端使用这个DTO并不适合JSF的设计。当然,后端意味着自己构造这个,例如,从一个从@ManagedBean收集字段的操作方法。你觉得我该怎么回答?我真的很抱歉我迟迟没有回答你。我的目标是JSF在不使用setter的情况下实例化对象,只使用构造函数,也就是说,JSF需要编写用户只使用构造函数输入的所有字段。非常感谢。