jsp:<s:sort comparator="myComparator" source="str">
<s:iterator id="name">
<tr>
<td><s:property value="name"/>
</td>
</tr>
</s:iterator>
</s:sort>myComparator:public class MyComparator implements Comparator<Object> { /**
* 順序
*/
public int compare(Object o1, Object o2) { int sort = ((String) o1).length() - ((String) o2).length(); return sort;
}
}执行发生以下错误:
致命的: サーブレット jsp のServlet.service()が例外を投げました
javax.servlet.jsp.JspException: comparator [null] does not implements Comparator interface
at org.apache.struts2.views.jsp.iterator.SortIteratorTag.doStartTag(SortIteratorTag.java:137)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspx_meth_s_005fsort_005f0(DT0013_jsp.java:290)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspx_meth_s_005fform_005f0(DT0013_jsp.java:179)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspService(DT0013_jsp.java:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
问题:
1>.标签怎样能调用myComparator,是否进行配置。
2>.MyComparator类路径是否有要求。
<s:iterator id="name">
<tr>
<td><s:property value="name"/>
</td>
</tr>
</s:iterator>
</s:sort>myComparator:public class MyComparator implements Comparator<Object> { /**
* 順序
*/
public int compare(Object o1, Object o2) { int sort = ((String) o1).length() - ((String) o2).length(); return sort;
}
}执行发生以下错误:
致命的: サーブレット jsp のServlet.service()が例外を投げました
javax.servlet.jsp.JspException: comparator [null] does not implements Comparator interface
at org.apache.struts2.views.jsp.iterator.SortIteratorTag.doStartTag(SortIteratorTag.java:137)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspx_meth_s_005fsort_005f0(DT0013_jsp.java:290)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspx_meth_s_005fform_005f0(DT0013_jsp.java:179)
at org.apache.jsp.WEB_002dINF.jsp.debug.struts2.tags.DT0013_jsp._jspService(DT0013_jsp.java:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
问题:
1>.标签怎样能调用myComparator,是否进行配置。
2>.MyComparator类路径是否有要求。
解决方案 »
- 对freemarker不熟。。。哪位帮我优化下这段代码
- 曝光: 中关村的红旗还能打多久?再揭中关村购机骗局 !!!
- java mail 发送邮件问题 。553 You are not authorized to send mail, authentication is required
- 在Linux下如何实现多个域名共用一个Ip
- 急!servlet跳转到main.html页面后点击左框架树状菜单右框架没有反应
- ████一个J2EE项目中,怎么编写大量的,易于维护和修改的JSP页面???████
- ArrayList中数据排序问题
- 对jive研究有兴趣的朋友进来看看,朋友原创了几篇分析文章很是透彻,不敢独享~~
- 推荐本JSP入门到深入的书
- 树型菜单的问题?
- 各位大神,帮忙看下了!Ajax不能读xml
- 通过表单向servlet提交数据不成功。
还有,最好给你的类文件也建立一个包,这样在JSP中导入bean文件时才能准备地找到文件的所在。
另外,也可以试试在继承接口的时候把 Comparator <Object> 最后的<Object>去掉。不过这个应该不会影响的,只是如果实在找不到错误原因的时候,可以尝试一下
JSP: <s:bean id="usesort" name="com.idoyu.struts.Sort"></s:bean>
<table width="200" border="1">
<s:sort comparator="#usesort" source="{'Spring2.0技术宝典','Ajax实战','Struts权威指南','JSP技术详解','Javascript技术大全'}">
<s:iterator status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td>
<s:property/>
</td>
</tr>
</s:iterator>
</s:sort>
</table>
</body>java bean:package com.idoyu.struts;
import java.util.Comparator;
public class Sort implements Comparator{
public int compare(Object o1, Object o2) {
return o2.toString().length()-o1.toString().length();
}
}
<s:sort comparator="#myComparator" source="{'《Java Web开发详解》','《VC++深入详解》','《Struts 2开发详解》','《Java无难事》'}" id="numbers">
<ol>
<s:iterator status="status">
<li>
<s:property/>
</li>
</s:iterator>
</ol>
</s:sort><%
java.util.Iterator it=(java.util.Iterator)pageContext.getAttribute("numbers");
out.println(1);
while(it.hasNext()){
String number=(String)it.next();
out.println(number+"<br>");
}
%>
//1 排序后该集合将被放到ValueStack栈顶,</s:sort>标签闭合后,又回自动从栈顶中移除!
<s:iterator> //2 默认迭代ValueStack栈顶集合
<s:property value="id" />|<s:property value="name" />|<s:property
value="password" />
</s:iterator>
</s:sort>
//////////////
<s:bean name="com.web.struts.bean.StrComparator" id="strComparator"></s:bean>
<s:sort comparator="#strComparator" source="{'aaa','caaa','cccc','bccscs'}">
<s:iterator>
<s:property />
</s:iterator>
</s:sort>
//比较器1
public class SubComparator implements Comparator<UserBean> { public int compare(UserBean o1, UserBean o2) {
// TODO Auto-generated method stub
return o1.id - o2.id;
}}
//比较器2
import java.util.Comparator;public class StrComparator implements Comparator<String>{
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}}