Java问题汇集(1)

1.javax.el.PropertyNotFoundException: Property 'Price' not found on type pet.petshop.dto.WareDto

简答:主要是原因是WareDto中的属性Price的命名不规范造成的

  private float Price 错误的写法  private float price 正确的写法  ${ware.Price}获取不到  ${ware.price}可以获取到

  private float MyName 错误的写法  private float myName 正确的写法  ${ware.Myname}获取不到  ${ware.myName}可以获取到

注解:也许按java的语法来说,这两种写法都没有错,但是使用el表达式的时候,它会默认属性名是小写开头,即我们通常的写法.当然大家也许觉得这是个bug,但是大家也许会注意到另一个问题,struts2传参时,struts的机制到底是通过你的属性名来传值,还是通过setter/getter方法名来确定传值呢,答案是后者。这里是题外话。这里给出出现该类异常的常见原因:1.可能是el表达式中你的属性名写错,跟没有该属性是同一种错误 2.可能是setter/getter方法没写

2.org.apache.jasper.JasperException: <h3>Validation error messages from TagLibraryValidator for c in /manager/ware_management.jsp</h3><p>182: Illegal child tag in "c:choose" tag: "c:forEach" tag</p>

简答:这个问题是c:choose标签被截断引起的

错误代码:

 1 <c:choose>
 2     <c:when test="${fn:length(requestScope.pages.list)>0}"></c:when>
 3     <c:forEach items="${requestScope.pages.list}" var="ware">
 4         <tr>
 5             <td><input type="checkbox" name="DeleteID" value='${ware.wareID}'/></td>
 6             <td>&nbsp;${ware.sortName}</td>
 7             <td>&nbsp;<a href="${ctx}/ware/WaretServlet?action=ware_info&flag=0&WareID=${ware.wareID}">${ware.wareName}</a></td>
 8             <td>&nbsp;${ware.addr}</td>
 9             <td>&nbsp;${ware.company}</td>
10 
11             <td><a href="${ctx}/ware/WaretServlet?action=ware_info&flag=1&WareID=${ware.wareID}"><img src="${ctx}/manager/images/user_edit.png" alt="" title="" border="0" /></a></td>
12             <td><a href="#" class="ask"><img src="${ctx}/manager/images/trash.png" alt="" title="" border="0" /></a></td>
13         </tr>
14     </c:forEach>
15     
16     <c:otherwise>
17         <tr>
18             <td colspan="7">还没有相关产品哦,快去添加一些吧~~~</td>
19         </tr>
20     </c:otherwise>
21     </c:choose>

正确的代码:

 1     <c:choose>
 2     <c:when test="${fn:length(requestScope.pages.list)>0}">
 3     <c:forEach items="${requestScope.pages.list}" var="ware">
 4         <tr>
 5             <td><input type="checkbox" name="DeleteID" value='${ware.wareID}'/></td>
 6             <td>&nbsp;${ware.sortName}</td>
 7             <td>&nbsp;<a href="${ctx}/ware/WaretServlet?action=ware_info&flag=0&WareID=${ware.wareID}">${ware.wareName}</a></td>
 8             <td>&nbsp;${ware.addr}</td>
 9             <td>&nbsp;${ware.company}</td>
10 
11             <td><a href="${ctx}/ware/WaretServlet?action=ware_info&flag=1&WareID=${ware.wareID}"><img src="${ctx}/manager/images/user_edit.png" alt="" title="" border="0" /></a></td>
12             <td><a href="#" class="ask"><img src="${ctx}/manager/images/trash.png" alt="" title="" border="0" /></a></td>
13         </tr>
14     </c:forEach>
15     </c:when>
16     <c:otherwise>
17         <tr>
18             <td colspan="7">还没有相关产品哦,快去添加一些吧~~~</td>
19         </tr>
20     </c:otherwise>
21     </c:choose>

看上面的代码,大家会发现是在第2行的c:when截断了choose代码

3.js中使用el表达式问题

一:可以通过window.onload()来得到EL的值再传送给JS文件里的全局变量、方法进行变量初始化 。
二:可以在JSP页面中添加一个隐藏域,给它赋值,在单独的js文件中,通过获取隐藏域的值就间接的获取到了EL表达式的值。

4.javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
出错代码:

<%--<c:set var="goods" value="${requestScope.pages.list}"/>正确代码--%>
<%--<c:set var="goods" value="${requestScope.pages}"/>错误代码--%>
    <c:set var="goods" value="${requestScope.pages}"/>
    <c:forEach items="${goods}" var="good">
    	<tr>
        	<td><input type="checkbox" name="DeleteID" value="${good.goodsID}" /></td>
            <td> ${good.goodsID}</td>
            <td><a href="../ware_detail.jsp?WareID=${good.wareID}" >${good.wareName}</a></td>
            <td> <a href="user_detail.jsp?UserID=${good.userID}" >${good.userName}</a></td>
            <td> ${good.buyNumber}</td>
			<td> ${good.createtime}</td>
        </tr>
    </c:forEach>

原因: 这里面错误的原因就是items里面不是集合

5.net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

具体:把ArrayList<WareDto>转化为Json数据时出错。

原因:WareDto为非标准的JavaBean或里面有属性没有提供setter/getter方法

6.严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: ServletContext resource [/WEB-INF/sqlmap-config.xml]; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/resultMap/result'.  Cause: com.ibatis.common.beans.ProbeException: There is no WRITEABLE property named 'userName_cn' in class 'com.sie.vo.User'
57 more

 提示:遇到这种问题,应该顺着Cause一个一个往下找,最后找到了'userName_cn' in class 'com.sie.vo.User'

 7.An internal error occurred during: "Launching SSI2 on Tomcat  6.x".

解决方案:

1、首先关闭MyEclipse工作空间。
2、然后删除工作空间下的
“/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.ast.deploy.core.prefs”
这个文件。在这个文件中存储了一些部署项目的信息。删了这个部署的项目的信息就没有错误了。
3、重启启动MyEclipse即可解决了。

原文地址:https://www.cnblogs.com/liuyq/p/3518777.html