2011-01-24 85 views
1

在大型Web应用程序上工作时,我使用了JSP的houndsres。 每个JSP包括(仅)一组内部标签,例如:JSTL/JSP动态表单页面状态

<AAA:INPUT value="bbb" state="<%=getPageState()"/> 

此标记被渲染成HTML输入字段中,与只读/使能状态,基于从getPageState的返回值()。

这基本上可以让我为启用/从单一入口点禁用设置完整的页面。我不喜欢这样(主要是因为它驱使我离开我想要的HTML,并且我需要为每个我想要的HTML属性维护属性),我知道我可以在JavaScript的客户端使用类似的东西。 是否有其他方法可以在Web服务器端的单点控制完整JSP表单的状态?

回答

1

我会去了解这个问题的方法是将getPageState()方法转换成一个标记,然后你的自定义标签内使用该标签。这样,您不必在每次调用自定义标记时显式传递页面状态。

当然,这意味着你将不得不修改所有的自定义标签使用这个新标签,但我认为这是不必到处是显式调用获得页面状态代码更好。更不用说,如果开发人员忘记检查页面状态,就会出现不一致的情况。

而且,现在作为元素需要如何呈现的决定权在自定义标签本身(它属于)。

我看到的唯一问题是,现在你必须做出多个(冗余)每个元素调用获得页面的状态,这是不是有效的。为了解决这个问题,你可以让你的自定义标签(获取页面状态)设置一个页面属性,并让你的自定义标签检查这个页面属性来决定是否应该禁用表单元素(另一种方法是创建一个范围为AT_END的变量)。

+0

谢谢。问题不在于它的性能方面,而在于如何处理与HTML元素相关的问题。如果我在HTML字段中使用getPageState(),那么我想用特定样式和特定的readOnly属性指示为禁用,我需要多次调用getPageState,使用taglib我可以做更通用的事情。 – 2011-01-25 12:05:32