Java 如何防止JSF命名空间污染 我认为JSF有一个命名空间污染,我必须将私有成员暴露给我不该做的世界。

Java 如何防止JSF命名空间污染 我认为JSF有一个命名空间污染,我必须将私有成员暴露给我不该做的世界。,java,jsf,design-patterns,design-principles,Java,Jsf,Design Patterns,Design Principles,下面是一个例子: 假设我有一个表单,其中包含From data和To date输入表单,在支持bean中表示为: private Date fromDate; private Date toDate; // then getters and setters only so JSF XHTML page can see the fields and work with 'em 然后我有一个私有方法,在后期构造时被调用: private List<? extends StatisticsMo

下面是一个例子:

假设我有一个表单,其中包含From data和To date输入表单,在支持bean中表示为:

private Date fromDate;
private Date toDate;
// then getters and setters only so JSF XHTML page can see the fields and work with 'em
然后我有一个私有方法,在后期构造时被调用:

private List<? extends StatisticsModel> _getDataModel() {
    List<? extends StatisticsModel> dataModel = null;
    if (isSingleDate()) {
        dataModel = getDataModel(getFromDate(), getFromDate(),
                getSelected());
    } else {
        dataModel = getDataModel(getFromDate(), getToDate(),
                getSelected());
    }
    return dataModel;
}

private list我不太明白这里的问题。如果需要,您可以将字段标记为受保护。或者更好:提供正在执行的相关代码,这些代码也需要改进。即使是受保护的代码,子类仍然可以看到。那么当前的设计有什么问题?您的变量可以是私有的,然后使用getter/setter访问它们。如果您想禁止子类访问字段,那么不要为它们提供任何getter。但是您还声明用户可能/必须从
中填充这些值。你的问题是如何满足所有这些要求,对吗?@LuiggiMendoza,我对自己做了一些编辑并重复了一遍,这样就可以很清楚了。您的问题与JSF完全无关。相反,我可以使用另一个类来存储这些
Date
值,并将其注入需要这些数据的相关托管bean。
protected abstract List<? extends StatisticsModel> getDataModel(Date from, Date to, String[] selected);