我的JSF2(带有Facelets)应用程序需要在ReadOnly/Editable模式下打开许多页面。以下是所需的确切行为:将文件有条件加载到页面中的所有JSF组件
- 当所有页面组件 显示为文本时,页面首次以只读模式加载。
- 用户单击编辑按钮以在可编辑模式下打开页面。
- 在可编辑模式下,所有组件都可见并且可以被操纵。
- 用户进行更改并点击保存,该页面以只读模式(即所有文本和没有组件)加载页面。
如果我在页面上有一个TextArea,在ReadOnly模式下,我不想让它禁用/只读,我想要一个outputText来代替。在可编辑模式下,它应该表现为TextArea。
考虑到我在应用程序中的多个页面上需要这种行为,什么是实现此目的的合适方法。
我应该写两个组件(textArea和outputText)并操纵它们的渲染属性来显示一个。
是否有可能以某种方式控制JSF上元素的行为并呈现文本而不是组件本身(可能通过编写自定义呈现器)?
非常感谢您的投入。
为什么这么过分复杂? – BalusC 2012-03-03 05:46:44
如果我使用你的方法,我将不得不编写许多自定义标签(一个用于inputText,一个用于SelectOne等),但是使用这种方法,我只写了两个类(一个用于组件和一个用于渲染器)。所有组件都将由相同的自定义渲染器渲染,这将有条件地选择渲染组件本身(如果处于读取模式下)或将渲染委托给相应的渲染器(如果处于编辑模式)。 – Ameya 2012-03-06 07:11:15