我在这样的复合组件中有一个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标签的width和height属性呈现为1.因此图像的宽度为1px,高度为1px。
答案 0 :(得分:3)
您可以通过<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>