【问题标题】:How to use a java class in a taglib scriptlet?如何在 taglib scriptlet 中使用 java 类?
【发布时间】:2011-10-20 20:35:26
【问题描述】:

我正在尝试将异常字符串从 java 类传递到 taglib。我从请求中获取异常并将其传递到标签库中,该标签库在带有错误文本的页面上生成一个 div。但是我收到一条错误消息“无法解析 e”以下是我的代码。

<% MyException e = (MyException) request.getAttribute(MyFields.EXCEPTION);
   if (e != null) { 
        String warningLevel = "none";
        if(e.getEndUserMessage().contains("warningLevel")){
            warningLevel = e.getEndUserMessage().substring(e.getEndUserMessage().indexOf("warningLevel=\"") + 14, e.getEndUserMessage().indexOf("\""));
        }
%>

<e:errorcontainer warningLevel="<%=warningLevel %>">
    <e:error propertyFile="${SSOFields.ERROR_PROPERTIES}"
            alertProperty="<%=e.getEndUserMessage()%>">  //This line is where e cannot be resolved
    </e:error>
</e:errorcontainer>
<%
   }
%>

我仍在学习有关 jsp 的知识,因此任何帮助都会令人惊叹。提前谢谢你。

【问题讨论】:

    标签: jsp exception jstl taglib scriptlet


    【解决方案1】:

    也许你的错误不是关于变量'e',而是标签库'e'?例如,您没有在 JSP 文件之上声明它?

    【讨论】:

      【解决方案2】:

      您有两个无法解决的潜在“e”问题 - 异常和 taglib 的命名空间。将 taglib 导入页面或应用程序命名空间时,您可能会遇到错误,您可以通过重命名异常变量来快速消除这些错误。

      【讨论】:

      • 即使我切换了变量名,我仍然会在我设置 alertProperty 的行中发现变量无法解析。如果我创建一个字符串变量并将 endUserMessage 设置为该变量,然后将字符串传递给 alertProperty,也会发生这种情况。然后它说字符串无法解析。
      • 抱歉 - 无法进一步帮助您,我已经有一段时间没有写标签库了。如果您可以选择使用哪种模板技术,我不会选择 jsp 和自定义标记库,因为有更好的替代品,例如 Freemarker。 JSP 与带有隐式变量(如请求和响应)的 servlet 体系结构紧密相关,以至于它需要令人讨厌的 hack 来做一些简单的事情,比如使用它的模板和 html 电子邮件。此外,您需要是 java 开发人员才能编写 taglib,而聪明的 html 开发人员可以编写 freemarker 宏。
      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多