15:57:04.110 [http-nio-8080-exec-10] ERROR com.opensymphony.xwork2.interceptor.ParametersInterceptor - Unexpected Exception caught setting ‘id’ on 'class com.whpu.k16035.action.DishesAction: Error setting expression ‘id’ with value [‘12’, ]
/*
控制层
*/
public class DishesAction {
//服务层
private DishesService dishesService;
private List<Dishes> dishesList;//传值
//接受单条数据id
private Integer id;
//接收对象
private Dishes dishes;
// 查询数据
public String selectDishesAll(){
dishesList = dishesService.selectDishesAll();//得到数据
System.out.println(dishesList.toString());
return "list";//跳转
}
// 修改单条数据--先查询单条数据
public String editDishesById(){
System.out.println("调用service层的修改单条数据方法");
dishes = dishesService.selectDishesById(id);
System.out.println("得到了id"+dishes.getId());
// 跳转到编辑页面
return "edit";
}
//保存修改的数据并--//重定向到查询全部的方法去
public String saveDishes(){
//(dao层通过hibernate更新到数据库)保存修改的数据
dishesService.saveDishes(dishes);
return "requert";//跳转到查询页面去更新数据
}
// ==================================================
public DishesService getDishesService() {
return dishesService;
}
public void setDishesService(DishesService dishesService) {
this.dishesService = dishesService;
}
public List<Dishes> getDishesList() {
return dishesList;
}
public void setDishesList(List<Dishes> dishesList) {
this.dishesList = dishesList;
}
}
操作当前jsp页面
<c:forEach items="${dishesList}" var="dishes">
<tr>
<td>${dishes.name}</td>
<td><img src="${dishes.imgpath}" width="30px" height="30px" /></td>
<td>${dishes.recipe}</td>
<td>${dishes.types.type}</td>
<td>${dishes.brief}</td>
<td>${dishes.price}</td>
<td>${dishes.sums}</td>
<td>${dishes.priceAssociator}</td>
<td>${dishes.sumsAssociator}</td>
<td><a href="${pageContext.request.contextPath}/manage/dishesAction!editDishesById.action?id=${dishes.id}">修改</a></td>
<%--<a href="${pageContext.request.contextPath}/empAction!editPage.action?id=${emp.id}">修改</a>--%>
<td><a href="${pageContext.request.contextPath}/DishesAction!">刪除</a></td>
</tr>
</c:forEach>
点击修改后想获取到id并且跳到修改单条数据的页面
于是报了上面那个错。
确定映射的名称没错后,再后台写了个输出语句,发现action的 editDishesById方法不能成功调用。说明href="
p
a
g
e
C
o
n
t
e
x
t
.
r
e
q
u
e
s
t
.
c
o
n
t
e
x
t
P
a
t
h
/
m
a
n
a
g
e
/
d
i
s
h
e
s
A
c
t
i
o
n
!
e
d
i
t
D
i
s
h
e
s
B
y
I
d
.
a
c
t
i
o
n
?
i
d
=
{pageContext.request.contextPath}/manage/dishesAction!editDishesById.action?id=
pageContext.request.contextPath/manage/dishesAction!editDishesById.action?id={dishes.id}">修改没有获取到吧
反反复复找了很久,发现action类中的id和dishes没有写get、set方法。
写了get、set后发现成功了。