• 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即可解决了。

  • 相关阅读:
    orcale 之数据操作
    快速排序-java
    javadoc错误: 编码gbk的不可映射字符
    javaweb-url /
    javaWeb-mvc之利用c3p0写入数据库出现乱码
    java基础-jdbc——三种方式加载驱动建立连接
    老调重弹:JDBC系列之<驱动加载原理全面解析) ----转
    java基础-反射之Class.forName
    mvc-servlet---servletContext与servletConfig2
    mvc-servlet---ServletConfig与ServletContext对象详解(转载)
  • 原文地址:https://www.cnblogs.com/liuyq/p/3518777.html
Copyright © 2020-2023  润新知