我正在尝试创建一个自定义 JSF 控件库,但自定义仅与设计(外观和感觉,可能还有简单的交互)有关,而不是功能。我不确定最好的方法是什么,因为我是 Java/JSF 的新手...我尝试创建自定义标签,但似乎必须将容器自定义标签中的所有属性传递给内部标签能够读取/写入值(除非我缺少 JSF 中的某些功能,否则这很麻烦)。也不确定这将如何影响后端代码中的事件处理,通常直接在 JSF 本机标记上处理。
有没有办法将设计与功能/属性/事件分开?主要目标是创建一个漂亮的文本框模板,其中默认样式仅在一个地方更改,而不是遍历使用控件的页面并添加/编辑/删除类......
下面的例子:
下面代表一个自定义标签:
<pk:inputText id="txtBx" value="Default Text Here" />
这是在页面中使用的。它是使用 Tailwind CSS 的常规 JSF 控件的样式化版本:
<h:inputText></h:inputText>
我希望后端开发人员能够顺利使用它而不影响他们的功能
自定义标签实现:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<ui:composition>
<h:inputText styleClass="appearance-none block w-full md:w-1/3 bg-gray-100 text-gray-700 border rounded py-3 px-4 mb-3 leading-tight focus:outline-none focus:bg-white" value = "#{value}" id = "#{id}">
</h:inputText>
</ui:composition>
</h:body>
</html>