【发布时间】:2011-03-30 01:23:09
【问题描述】:
我正在使用 eclipse 创建我的 jsf 项目。
我创建了自己的组件,我不希望其他程序员能够使用 jsf 常规组件,例如 h:inputtext 等。
我如何在 Eclipse 中做到这一点,如果用户添加特定标签,如 h:inputtext,他会在页面中看到错误,并且在尝试运行时也会看到错误?
【问题讨论】:
标签: java eclipse jsf compiler-construction jsf-2
我正在使用 eclipse 创建我的 jsf 项目。
我创建了自己的组件,我不希望其他程序员能够使用 jsf 常规组件,例如 h:inputtext 等。
我如何在 Eclipse 中做到这一点,如果用户添加特定标签,如 h:inputtext,他会在页面中看到错误,并且在尝试运行时也会看到错误?
【问题讨论】:
标签: java eclipse jsf compiler-construction jsf-2
那不是 Java,那是 JavaServer Faces。
一般原则上,您不能为其他开发人员实现这一点。如果需要,他们会绕过它。
您可以做的是强制执行一个策略,即使用您的组件而不是库存的 JSF 组件,然后在构建时验证这一点。您的源存储库或构建服务器(首选)应该对此进行测试并导致操作失败。这也将允许开发人员在需要进行本地调试时使用标准 JSF,只要它不共享。
为了检查 JSF 页面,您可以利用它是一个 XML 文档并使用 XSLT 来验证所有标签和属性。我的方法是检查所有标签上的名称空间,如果在黑名单中找到则触发失败。
【讨论】:
我猜你可以写一个Eclipse WTP validation plugin 来验证你的视图文件。我会检查 http://java.sun.com/jsf/html 命名空间是否存在。
禁止这些标签的一个简单方法是让它们在运行时爆炸。您可以通过将具体组件重新定义为在实例化时引发异常的组件来做到这一点。例如,要替换commandButton 实现,您将在faces-config.xml 中定义javax.faces.HtmlCommandButton 的组件类型。如果您正在编写自定义控件,那么您可能已经对该领域有相当了解。这将需要向应用程序添加一个库。
【讨论】: