如果复合组件为空,如何不在复合组件内设置组件的属性?
How not to set an attribute of a component inside a composite component if it is empty?
我在这样的复合组件中有一个 h:graphicImage:
<composite:interface>
<composite:attribute name="name" required="true" type="java.lang.String" />
<composite:attribute name="alt" required="false" type="java.lang.String" />
<composite:attribute name="height" required="false" type="java.lang.String" />
<composite:attribute name="width" required="false" type="java.lang.String" />
</composite:interface>
<composite:implementation>
<h:graphicImage url="something-common#{cc.attrs.name}"
alt="#{cc.attrs.alt}"
height="#{cc.attrs.height}"
width="#{cc.attrs.width}" />
</composite:implementation>
但是,如果未设置某些属性(例如宽度、高度),它们将呈现为空。在 win7 的 IE9 中,这会导致 img 标签的宽度和高度属性呈现为 1。因此图像具有 1px 宽度和 1px 高度。
您可以通过 <c:if><f:attribute>
.
有条件地添加属性
<h:graphicImage ...>
<c:if test="#{not empty cc.attrs.height}"><f:attribute name="height" value="#{cc.attrs.height}" /></c:if>
<c:if test="#{not empty cc.attrs.width}"><f:attribute name="width" value="#{cc.attrs.width}" /></c:if>
</h:graphicImage>
另请参阅:
- JSTL in JSF2 Facelets... makes sense?
我在这样的复合组件中有一个 h:graphicImage:
<composite:interface>
<composite:attribute name="name" required="true" type="java.lang.String" />
<composite:attribute name="alt" required="false" type="java.lang.String" />
<composite:attribute name="height" required="false" type="java.lang.String" />
<composite:attribute name="width" required="false" type="java.lang.String" />
</composite:interface>
<composite:implementation>
<h:graphicImage url="something-common#{cc.attrs.name}"
alt="#{cc.attrs.alt}"
height="#{cc.attrs.height}"
width="#{cc.attrs.width}" />
</composite:implementation>
但是,如果未设置某些属性(例如宽度、高度),它们将呈现为空。在 win7 的 IE9 中,这会导致 img 标签的宽度和高度属性呈现为 1。因此图像具有 1px 宽度和 1px 高度。
您可以通过 <c:if><f:attribute>
.
<h:graphicImage ...>
<c:if test="#{not empty cc.attrs.height}"><f:attribute name="height" value="#{cc.attrs.height}" /></c:if>
<c:if test="#{not empty cc.attrs.width}"><f:attribute name="width" value="#{cc.attrs.width}" /></c:if>
</h:graphicImage>
另请参阅:
- JSTL in JSF2 Facelets... makes sense?