0

首先,抱歉标题不好,但我不知道如何更好地描述它。

我的问题:

我想在<p:lightbox>元素中显示图片。不幸的是,这些图片的文件名中包含“#”字符,因此它们看起来像这样,例如:desert_#1#.jpg。

这是我的代码:

<p:panel id="showPics" closable="false" header="Fotos: ">
      <p:lightBox styleClass="imagebox">  
          <p:dataList value="#{myBean.fotoList}" var="fl" >
              <h:outputLink value="#{request.contextPath}/resources/pics/#{fl.PictureName}" title="#{fl.PictureName}" >  
                    <h:graphicImage value="#{request.contextPath}/resources/pics/#{fl.PictureName}"/>  
              </h:outputLink>          
          </p:dataList>
     </p:lightBox> 
</p:panel>

beanvalue #{fl.PictureName} 返回文件名,所以在我们的示例中,desert_#1#.jpg

现在,当我运行我的应用程序时,我收到以下错误消息:

访问 /resources/pics/desert_ 时出现问题。原因:未找到

所以我的猜测是,图片名称中的 # 字符被识别为对 beanmethod/value 的引用(或任何你称之为的引用),它们当然不是。因此,文件名中第一个“#”之后的字符串不再被识别。不幸的是,我不能简单地更改文件名来摆脱“#”。

有人可以告诉我如何解决这个问题吗?先感谢您!

更新:我将 JSF2.0 与 Primefaces 和 Primefaces 移动组件(因为我的应用程序是移动 Web 应用程序)和 Spring webflow 框架一起使用。我的 IDE 是 Netbeans。

4

1 回答 1

0

在服务器端,使用URI percent encoding对 bean 值进行编码。在这种情况下,该属性应使用文件名%23#的位置。

于 2013-08-21T14:23:08.023 回答