java - 将结果(返回值)输出到变量而不是打印出来的 JSP 标记文件

标签 java jsp jstl taglib

我有一个扩展 TagSupport 类的自定义 JSP 标记文件(Java 类)。在此类中,我有 doEndTag 方法来计算某些内容,输出如下所示:

public class ScopeTag extends TagSupport {
    private Scope scope;
    public int doEndTag() throws JspTagException {
        String content = null;
        content = String.valueOf(srs.getParameterDatasByScope(scope).size()); // src is my service class
        pageContext.getOut().print((content == null) ? "" : content);
        return EVAL_PAGE;
    }
}

现在我在 JSP 中使用此标记类:

<td><i:scope type="numOfParamData" scope="${scope}"/> parameter rules</td>

现在,我不想将值打印在 td 元素内,而是将其存储到变量中以供进一步处理。比如说,我想看看它的返回值是否为0。

我想编写 Tag Java 类,以便我可以使用类似于 JSTL 标记 fmt:parseDate 的标记,如下所示。

<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy" />  
<p>Parsed Date: <c:out value="${parsedEmpDate}" /></p>  

这里结果(格式化数据)被存储到变量parsedEmpDate

那么为了实现类似 fmt:parseDate 的功能,我必须在 Tag 类中进行哪些更改?

最佳答案

我的问题(我的需要)与此线程中的问题几乎相同:JSP tag file that either outputs its body or returns it in a variable

但是,该线程中的答案与在 .tag 文件中编写标记库代码有关,这对我来说是新的。我所知道的关于编写标签库的就是将其编码为 java 类。这就是我创建这个线程的原因。

尽管如此,我还是从上述线程中获取了一些提示/帮助,并制定了自己的解决方案: 我使用这行文本作为我的解决方案 - 我知道调用者可以通过将自定义标记包装在 c:set 中来实现此目的,但这比简单地声明“var”不太优雅

这是代码:

<c:set var="optin">
   <i:scope type="paramData" scope="${scope}" paramNum="40100"/>
</c:set>

没有对标签库 java 类进行任何更改..

关于java - 将结果(返回值)输出到变量而不是打印出来的 JSP 标记文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478584/

相关文章:

java - 创建自定义标签 在输入字段为空时使用

java - JPA exception::join 预期的路径

java - 使用 janino 将 java 源代码从字符串编译为字节数组中的字节码

java - 多线程状态相关问题

java - 如何将键值对从jsp传递到servlet?

java - 为什么别名模型对象无法从 jsp include 访问?

java - 将 ArrayList 从 Servlet 传递到 JSP

java.lang.ClassCastException : java. lang.String 无法转换为 com.example.service.AlbumService

java - AsyncTask 如何将一个进程转移到另一个进程?

java - 使用 Jsp Servlet 中的 bootstrapValidator 远程检查数据库中的电子邮件可用性