如何制作一个可点击的图像,用于调用带参数的动作

时间:2013-04-11 13:54:34

标签: image jsf-2 commandlink

我想要一个可点击的图片,它会在点击时向我的动作发送两个参数。我使用<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> 

然而,它没有用。我该如何正确实现这一目标?

1 个答案:

答案 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>