我想要一个可点击的图片,它会在点击时向我的动作发送两个参数。我使用<h:graphicImage>
尝试了以下内容。
<h:graphicImage url="/pic/down.png" alt="download">
<h:outputLink action="#{file.download}">
<f:param name="id" value="#{file.id}"></f:param>
<f:param name="name" value="#{file.name}"></f:param>
</h:outputLink>
</h:graphicImage>
然而,它没有用。我该如何正确实现这一目标?
答案 0 :(得分:4)
如果你知道basic HTML,那就更容易了。纯HTML中的可点击图片如下所示:
<a href="..."><img src="..." /></a>
但是,您的JSF代码生成的是这个(右键单击,浏览器中的查看源以查看它):
<img src="..."><a href=" ..." /></img>
这是invalid HTML。你需要交换它们。
此外,我不确定这是否是不小心摆弄/在黑暗中拍摄的结果,但action
不支持<h:outputLink>
属性。您可能打算使用<h:commandLink>
。
所以,总而言之,这应该做到:
<h:commandLink action="#{file.download}">
<h:graphicImage value="/pic/down.png" alt="download" />
<f:param name="id" value="#{file.id}" />
<f:param name="name" value="#{file.name}" />
</h:commandLink>
(确保将其置于<h:form>
)
但我不确定如何将#{file}
的属性传递回显然与调用操作的#{file}
实例完全相同。您也可以省略那些<f:param>
事物并直接在操作方法中访问属性。
<h:commandLink action="#{file.download}">
<h:graphicImage value="/pic/down.png" alt="download" />
</h:commandLink>