我有一个扩展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中使用此Tag类:
<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类中做些什么改变?
答案 0 :(得分:1)
我的问题(我的需要)与此帖子中的问题几乎相同:JSP tag file that either outputs its body or returns it in a variable
但是,此主题中的答案与在.tag
文件中编写标记库代码有关,这对我来说是新的。我在编写标记库时所知道的就是将其编码为java类。这就是我创建这个帖子的原因。
然而,我继续从上面的线程中获取一些提示/帮助,并制定了我自己的解决方案:
我使用这一行文字作为我的解决方案 - I know that the caller can achieve this by wrapping the custom tag in a c:set, but this is less elegant than simply declaring a "var"
以下是代码:
<c:set var="optin">
<i:scope type="paramData" scope="${scope}" paramNum="40100"/>
</c:set>
未对标记库java类进行任何更改..
答案 1 :(得分:0)
显然你可以使用SimpleDateFormat http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html;
示例:
Date today = new Date();
//If you print Date, you will get un formatted output
System.out.println("Today is : " + today);
//formatting date in Java using SimpleDateFormat
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yyyy");
String date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yyyy format : " + date);
//Another Example of formatting Date in Java using SimpleDateFormat
DATE_FORMAT = new SimpleDateFormat("dd/MM/yy");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd/MM/yy pattern : " + date);
//formatting Date with time information
DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yy:HH:mm:SS : " + date);
//SimpleDateFormat example - Date with timezone information
DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS Z");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yy:HH:mm:SSZ : " + date);
<强>输出:强>
Today is : Fri Nov 02 16:11:27 IST 2012
Today in dd-MM-yyyy format : 02-11-2012
Today in dd/MM/yy pattern : 02/11/12
Today in dd-MM-yy:HH:mm:SS : 02-11-12:16:11:316
Today in dd-MM-yy:HH:mm:SSZ : 02-11-12:16:11:316 +0530