我需要根据属性的类型来呈现属性。如果它是boolean
类型,那么我将其渲染为布尔值,依此类推。请注意,所有属性实际上都以文本类型存储在DB中。
我正在使用c:forEach
解决此问题。并使用适当的JSF转换器转换值。在我们使用JBoss之前,一切都很好。迁移到Wildfly之后,我发现该页面现在非常慢。
Jboss的早期版本是6.1,现在我们已升级到Wildfly 10.1。
所以我开始使用ui:repeat
来解决这个问题。现在页面的渲染速度更快,但是我现在面临其他类型的问题。我在布尔转换器方面遇到问题。似乎JSF布尔转换器在ui:repeat
呈现布尔JSF组件之前执行。
任何想法如何解决此问题?
是加快c:forEAch
还是使用ui:repeat
解决布尔值转换问题?
如果有帮助,这里是相关代码:
这是xhtml的示例代码:
$ {attribObj.clusterMetaAttr.id}
<tr:inputText id="${'iterAttribValStr'.concat(attrIdStr)}"
styleClass="ce_input_text" simple="true"
shortDesc="#{attribObj.clusterMetaAttr.getDescription()}"
secret="#{attribObj.clusterMetaAttr.encrypted}"
partialTriggers="${fn:split(''.concat(ClusterEditor.destinationTypeDropDownId),'')}"
autoComplete="#{attribObj.clusterMetaAttr.encrypted==true ? 'off' : 'on'}"
value="#{attribObj.clusterOverrideValue}"
<tr:validateRegExp
pattern="#{ClusterEditor.getRegExPatternForAttrib(attribObj.clusterMetaAttr.type, attribObj.clusterMetaAttr.getDescription())}"
messageDetailNoMatch="#{ClusterEditor.getRegExErrorMsgForAttrib(attribObj.clusterMetaAttr.type, attribObj.clusterMetaAttr.getDescription())}" />
</tr:inputText>
<tr:selectOneChoice
shortDesc="#{attribObj.clusterMetaAttr.getDescription()}"
id="${'iterAttribValDropdown'.concat(attrIdStr)}" simple="true"
autoSubmit="true"
value="#{attribObj.clusterOverrideValue}">
<f:selectItem itemLabel="#{messages.aus_select}" />
<s:selectItems
value="#{ClusterEditor.getDropDownValueList(attribObj.clusterMetaAttr.choices)}"
var="dropDownValue" itemValue="#{dropDownValue}"
label="#{dropDownValue}" />
</tr:selectOneChoice>
<tr:selectBooleanCheckbox
shortDesc="#{attribObj.clusterMetaAttr.getDescription()}"
id="${'attribValBool'.concat(attrIdStr)}"
value="#{attribObj.clusterOverrideValue}" simple="true"
converter="com.av.web.framework.BooleanAttributeConverter"/>