我正在将servlet / jsp Netbeans的Affableben教程移植到JSF Framework,并希望将Facelets用于视图。
我已经拥有JPA实体,会话bean和托管bean。我从视图开始。但是,我没有找到Facelets中的等效工具来解决这一问题:
<a href="<c:url value='category?${category.id}'/>">
这是jsp和facelets中的完整循环:
JSP代码:
<c:forEach var="category" items="${categories}">
<div class="categoryBox">
<a href="<c:url value='category?${category.id}'/>">
<span class="categoryLabel"></span>
<span class="categoryLabelText"><fmt:message key='${category.name}'/></span>
<img src="${initParam.categoryImagePath}${category.name}.jpg"
alt="<fmt:message key='${category.name}'/>" class="categoryImage">
</a>
</div>
</c:forEach>
等效Facelets代码:
<ui:repeat var="category" value="${categoryController.items}">
<div class="categoryBox">
<h:link outcome="${category.id}"/>
<span class="categoryLabel"></span>
<span class="categoryLabelText">${category.name}</span>
<img src="./resources/img/categories/${category.name}.jpg"
alt="${category.name}" class="categoryImage"/>
</div>
</ui:repeat>
这条线在预期的Facelets中不起作用:
<h:link outcome="${category.id}"/>
Facelets中的工作等效物是什么?
编辑1
public String getName() throws UnsupportedEncodingException {
return URLEncoder.encode(name, "UTF-8");
}
警告消息:无法找到资源img / categories / fruit +%26 + veg.jpg
答案 0 :(得分:1)
<h:link>
使用JSF隐式导航并需要实际(隐式)导航结果值。您需要在结果中指定视图ID。您需要按<f:param>
指定请求参数。您还需要像在初始示例中一样将链接和图像嵌套在链接中。假设您在根目录中有一个category.xhtml
文件,这应该是:
<h:link outcome="category">
<f:param name="id" value="#{category.id}" />
<span class="categoryLabel"></span>
<span class="categoryLabelText">#{category.name}</span>
<img src="./resources/img/categories/#{category.name}.jpg"
alt="#{category.name}" class="categoryImage"/>
</h:link>
无关,您应该使用<h:graphicImage>
代替<img>
。这样JSF将确保正确设置src
。在您的特定情况下将是
<h:graphicImage name="img/categories/#{category.name}.jpg"
alt="#{category.name}" class="categoryImage"/>
(请注意,我已将${}
替换为#{}
,只是为了遵守标准和一致性)
答案 1 :(得分:0)
您可以从此行更改:
<a href="<c:url value='category?${category.id}'/>">
到此:
<h:link outcome="category.xhtml?id=#{category.id}" />
<h:link outcome="category">
<f:param name="id" value="#{category.id}" />
</h:link>
<h:outputLink value="category.xhtml?id=#{category.id}" ></h:outputLink>