关于Jsp页面的jstl标签的级联属性的异常。

使用SpringMVC框架时,当我做表单回显时。

情景描述。Employee 类有一个Department类的属性。这两各类存在多对一关联关系。

下面是Employee类的属性的定义。

public class Employee
{
    private Integer id;
    private String name;
    private String email;
    private int gender;
    private Department department;
}

下面是Employee类的属性的定义。

public class Department
{
    private Integer id;
    private String departmentName;
}

当我在添加Employee 对象的页面做部门信息的表单回显时。相关的jsp页面如下。

<form:form action="input" method="POST" modelAttribute="employee">

        Name: <form:input path="name"/>
        <br>
        Email: <form:input path="email"/>
        <br>
        <%
            Map<Integer, String> genders = new HashMap();

            genders.put(0, "Female");
            genders.put(1, "Male");

            request.setAttribute("genders", genders);
        %>
        Gender: <form:radiobuttons path="gender" items="${genders}"/>
        <br>
        <%--
            jstl是支持级联属性的,在这里我想选择的部门id,则直接写Employee类中的department属性再".id"就可以了。
            而后面的itemLabel 属性和 itemValue 属性。就不用再加department这个前缀了。直接写Department类的属性名称即可。

            Department: <form:select path="department.id" items="${departments}"
            itemLabel="department.departmentName" itemValue="department.id"></form:select>
        --%>
        Department: <form:select path="department.id" items="${departments}"
        itemLabel="departmentName" itemValue="id"></form:select>
        <br>
        <input type="submit" name="Submit">
        <br>
    </form:form>

在上述jsp页面的代码中,如果把注释里的代码跟注释外面的代码换一下就会出现异常。NotReadablePropertyException

异常如下:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/input.jsp at line 39

36:             Department: <form:select path="department.id" items="${departments}"
37:             itemLabel="department.departmentName" itemValue="department.id"></form:select>
38:         --%>
39:         Department: <form:select path="department.id" items="${departments}"
40:         itemLabel="department.departmentName" itemValue="department.id"></form:select>
41:         <br>
42:         <input type="submit" name="Submit">
org.springframework.beans.NotReadablePropertyException: Invalid property ‘department‘ of bean class [com.zcd.ssh.beans.Department]: Bean property ‘department‘ is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
    org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:633)
    org.springframework.beans.AbstractNestablePropertyAccessor.getNestedPropertyAccessor(AbstractNestablePropertyAccessor.java:850)
    org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyAccessorForPropertyPath(AbstractNestablePropertyAccessor.java:827)
    org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:622)
    org.springframework.web.servlet.tags.form.OptionWriter.doRenderFromCollection(OptionWriter.java:202)
    org.springframework.web.servlet.tags.form.OptionWriter.renderFromCollection(OptionWriter.java:180)
    org.springframework.web.servlet.tags.form.OptionWriter.writeOptions(OptionWriter.java:133)
时间: 2024-09-29 09:38:50

关于Jsp页面的jstl标签的级联属性的异常。的相关文章

jsp页面中jstl标签详解

JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库. Web程序员能够利用JSTL和EL来开发We

如何理解jsp页面的“&lt;base href=&quot;&lt;%=basePath%&gt;&quot;&gt;”

jsp文件里通常有以下代码: 这里的<base href="<%=basePath%>">是什么意思呢? 我在W3School网站上查了html中的base标签,解释如下: <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base> 标签可以改变这一点.浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有

JSP中利用JSTL标签对日期格式化

数据库:Mysql 开发语言:JAVA 页面类型:JSP 对Mysql中的日期类型格式化,在JSP中,如何办呢,很多人说在JAVA后台去日期格式化,无奈了,于是找到了比较靠谱的答案 需要先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 其次对JSP输出的日期进行格式化 <span>发布时间:<fmt:formatDate value=&qu

jsp页面的el表达式取数据

在jsp页面去Id时候要照上面的方式取,不能照下面的方式取:

父页面操作嵌套iframe子页面的HTML标签元素

一个页面A.html使用iframe嵌套一个页面B.html,在A页面写js操作B页面HTML元素,首先要获取到B页面document对象,才能对嵌套页面进行操作 请看一个实例,在A页面写js操作B页面div的内容: A.html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="

JSP页面的9个隐含变量

九个隐含变量:out request response pageContext session application config page exception 1.out: JspWriter对象,调用out.print()直接把字符串打印到浏览器上 2.request:HttpServletRequest对象 3.response:HttpServletResponse对象(在jsp页面几乎用不到) 4.pageContext:页面上下文,是pageContext的一个对象,可以从该对象中

关于jsp页面的click事件传“821-1”字符串问题

有一个按钮,点击时需要将一个id作为参数传过去,这个id是后台action生成的,前台可以用struts的标签和el表达式进行表达,原来的参数大多是211,23444之类的,但是现在有一个821-1,如果我的onclick事件是下面这样写的: onclick="fun1(${id})",那么fun1方法的参数居然变成了820,用<c:out value="id"/>也是820,最后用onclick="fun1(‘${id}’)"才将8

[jsp学习笔记]jstl标签的使用

jstl常用在html嵌套 <body> <% session.setAttribute("q", "yushi"); request.setAttribute("w", "阿毛"); ArrayList<String> list =new ArrayList<String>(); list.add("大户"); list.add("小马");

坑人的MyEclipse之-修改JSP页面的JavaScript背景颜色

MyEclipse开发JSP页面时,如果要写JavaScript代码, 背景颜色默认是白色!效果如下: 这种反人类的设计我已经无力吐槽了!要改为黑色的话可以通过下面的方法设置: