ExpressionLanguage(EL)未按预期工作

时间:2012-08-25 07:05:26

标签: java jsf jsf-2 el

我正在创建Web应用程序,其中包含以下代码。

<p:commandButton ajax="false" 
 style="#{patentInfo.photoType.contains('application')?
 'visibility:visible;width:200px;height:200px;
  background-image: url(DisplayImage?mainID=tempo1&amp;id=#{patentInfo.photoType});
  background-repeat: no-repeat;background-size: 100% 100%;'
 :
 'visibility:hidden;width:2px;height:2px;'}">

我正在设置背景图像,我将Java类用作DisplayImage并将参数传递给mainID=tempo1&amp;id=#{patentInfo.photoType}。在java中,我正在打印mainID&amp; id用于测试目的。

DipalyImage.java

String mainID = request.getParameter("mainID");
String id = request.getParameter("id");
System.out.println("mainID=="+mainID+", id=="+id);

patentInfo.photoType会将数据保存为application/pdf

问题在于我传递的背景图片参数。

  1. 当我使用background-image: url(DisplayImage?mainID=tempo1&amp;id=#{patentInfo.photoType});&amp;打印mainID&amp; id我得到的价值如下。

    mainID=temp1&amp; id=

    我没有得到任何关于身份.....

  2. 当我使用background-image: url(DisplayImage?mainID=tempo1&amp;id=patentInfo.photoType);&amp;打印mainID&amp; id我得到的价值如下。

    mainID=temp1&amp; id=patentInfo.photoType

  3. 我在这里做错了什么?

    我期待输出为mainID=temp1&amp; id=application/pdf

1 个答案:

答案 0 :(得分:1)

问题是你的el。{/ p>中有#{ ... #{} ...}

尝试这样的事情:

<p:commandButton ajax="false" style="#{patentInfo.photoType.contains('application')?'visibility:visible;width:200px;height:200px;background-image: url(DisplayImage?mainID=tempo1&amp;id='.concat(patentInfo.photoType).concat(';background-repeat: no-repeat;background-size: 100% 100%;'):'visibility:hidden;width:2px;height:2px;'}">