java – 是否可以在JSF中实现动态组件树?
作者:互联网
我试图在JSF 1.2(Mojarra)中构建一个组件树,其中树由多种类型的结点和叶节点组成.每个叶节点都需要以独特的方式进行渲染,并且需要使用潜在的更改进行回发.目的是允许用户更新处理逻辑,其中每个叶节点表示操作,例如“值等于”或“值不等于”.
例如:
Root
|
+- InternalNode1 (type I_A)
| |
| +- LeafNode1 (type L_A)
| |
| +- LeafNode2 (type L_B)
|
+- InternalNode2 (type I_B)
|
+- LeafNode3 (type L_B)
|
+- LeafNode4 (type L_A)
每种类型的叶节点需要以不同的方式呈现,具体取决于该节点类型的需要.此外,树可以修改,并且可以使用Javascript添加或删除节点,并将更新发布回服务器等.例如,在上面的树中,可以删除LeafNode4,或者将其类型更改为L_B.
这甚至可以用JSF组件吗?我是否试图使用多态UI组件以错误的方式进行操作?
解决方法:
可以通过编程方式构建组件树,但这对于您的用例来说是错误的方法.允许用户代理操纵这种服务器端代码通常是不安全的.
最好使用模型来管理树结构(基本上是approach Don Roby is suggesting).然后,可以像任何其他用户输入一样验证构成此模型的数据,以确保攻击者不会尝试放置服务器端数据进入无效状态.
JSF的声明性方法使得开箱即用(你可以看到粗树渲染示例here)具有挑战性.如果你不想拖入第三方库(或编写你自己的控件)你可能会更好处理JavaScript中的所有树UI并使用JSF隐藏字段将其传输到服务器或从服务器传输.
标签:java,jsf,components,facelets 来源: https://codeday.me/bug/20190630/1338638.html