【问题标题】:Trying to compare value of meta tag using sitemesh and EL尝试使用 sitemesh 和 EL 比较元标记的值
【发布时间】:2014-09-07 23:22:43
【问题描述】:

我正在尝试将 sitemesh 返回的元标记的值与字符串进行比较,但它没有显示正确的结果。下面是我正在尝试的代码。如果有问题请告诉我。

<c:set var="pageName" scope="request"  ><sitemesh:write property='meta.menu'/></c:set>
<c:if test="${pageName=='Doctorhome'}"> somthing </c:if>

如果阻止内容,则不打印。我还尝试打印 ${pageName},它打印出 Doctorhome。

请问有什么问题。

【问题讨论】:

    标签: jsp el sitemesh


    【解决方案1】:

    在进行大量研发后,我观察到在 EL 之后处理了sitmesh 写入标签。 所以我使用 EL 本身来检查页面值。

    【讨论】:

      【解决方案2】:

      “pageName”在请求范围内,所以改变这一行:

      <c:if test="${pageName=='Doctorhome'}"> somthing </c:if>
      

      到

      <c:if test="${requestScope.pageName=='Doctorhome'}"> somthing </c:if>
      

      还可以在将 requestScope.pageName 转储到屏幕时检查空格,方法是在其前后添加一个字符:

      <c:out value="=${requestScope.pageName}="/>
      

      并确保等号和 DoctorHome 文本之间没有空格。

      【讨论】:

      • 我按照你的建议试过了。但是在使用 打印时,它会打印 ''。但如果我用 ${requestScope.pageName} 打印相同,它会打印“Doctorhome”。我感觉sitemesh标签是在C标签操作之后处理的。
      • 在 sitemesh 2 中,我们有 decorator:getproperty 标记,我的要求可以正常工作。但是在sitemesh 3中,我无法获得与装饰器相同的功能:getProperty。如果有人有想法,请告诉我。
      【解决方案3】:

      试试c:set标签的value属性,

      <c:set var="pageName" scope="request" value="${<sitemesh:write property='meta.menu'/>}" />
      <c:if test="${pageName == 'Doctorhome'}"> somthing </c:if>
      

      【讨论】:

      • 对不起,伙计,但我认为这种赋值方式是不可能的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2013-04-13
      • 2016-07-18
      • 2021-08-03
      • 2023-03-09
      相关资源
      最近更新 更多