Ответ 1
Либо используйте обычный <a>
элемент вместе с пользовательской функцией EL, которая делегирует URLEncoder#encode()
.
<c:set var="url" value="#{beanOne.someMethod}/sometext#{prettyContext.requestURL.toURL()}"/>
<c:set var="media" value="#{beanOne.someOtherMethod}/sometext/somemoretext/#{beanTwo.someMethodTwo}-some-text.jpg"/>
<c:set var="description" value="#{beanTwo.someOtherMethodTwo}"/>
<a href="#" onclick="location.href='http://pinterest.com/pin/create/button/?url=#{utils:encodeURL(url)}&media=#{utils:encodeURL(media)}&description=#{utils:encodeURL(description)}'; return false;" class="pin-it-button" count-layout="horizontal">
<img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" />
</a>
(обратите внимание, что атрибут class
недействителен для <h:outputLink>
, вы должны использовать styleClass
)
Или создайте собственный рендерер для <h:outputLink>
, который добавит поддержку атрибута count-layout
. Предполагая, что вы используете Mojarra, проще всего расширить его OutputLinkRenderer
:
public class ExtendedLinkRenderer extends OutputLinkRenderer {
@Override
protected void writeCommonLinkAttributes(ResponseWriter writer, UIComponent component) throws IOException {
super.writeCommonLinkAttributes(writer, component);
writer.writeAttribute("count-layout", component.getAttributes().get("count-layout"), null);
}
}
Чтобы запустить его, зарегистрируйте его в faces-config.xml
следующим образом:
<render-kit>
<renderer>
<component-family>javax.faces.Output</component-family>
<renderer-type>javax.faces.Link</renderer-type>
<renderer-class>com.example.ExtendedLinkRenderer</renderer-class>
</renderer>
</render-kit>