高分求解决Struts2类型转换问题。

mythling 2010-10-26 09:30:30

jsp页面中输入数量:
<input type="text"
name="productItemList[${t.index}].sum" size="8" />
Action中:
private List<ProductItem> productItemList;
ProductItem类中有Long 类型的sum。

因为数量是Long类型,页面数量如果输入字符串,则Struts2会提示:Invalid field value for field "productItemList[1].sum".
怎么样在properties里填写信息覆盖,这个提示太不友好了,

提示:迷糊点在properties里不知道怎么写这个sum字段
invalid.fieldvalue.productItemList.sum 和invalid.fieldvalue.sum都不对,求高手指点。
...全文
232 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
小霍夫 2010-10-27
  • 打赏
  • 举报
回复



那就是你的不对拉。。 如上图...怎么会没有呢。

invalid.fieldvalue.hardwareApplicationVo.detailVoList[0].account = error.

这是我实验的..

mythling 2010-10-27
  • 打赏
  • 举报
回复

invalid.fieldvalue.productItemList[0].sum=\u7528\u6237\u53F7\u5FC5\u987B\u662F\u6574\u6570
invalid.fieldvalue.productItemList[1].sum=\u7528\u6237\u53F7\u5FC5\u987B\u662F\u6574\u6570

提示:
•Invalid field value for field "productItemList[1].sum".


mythling 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wolfkingty 的回复:]

那就这样



invalid.fieldvalue.productItemList[0].sum= 提示信息;

如果你有好多。那只能是 0,1,2,3,写一路过去就行拉_
[/Quote]
晕死,真的不行,我骗你干吗。根本不提示。
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
别告诉我不行。。我刚才才试过。
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
那就这样



invalid.fieldvalue.productItemList[0].sum= 提示信息;

如果你有好多。那只能是 0,1,2,3,写一路过去就行拉_

mythling 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wolfkingty 的回复:]

举个例子
Action
Integer age ;


Action.properties file
invalid.fieldvalue.age = "你输入的年龄格式不对,请重新输入";


像这样.
[/Quote]
我这里是List集合中的ProductItem对象的sum属性。
tiver2010 2010-10-27
  • 打赏
  • 举报
回复
addFieldError & addActionError
mythling 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wolfkingty 的回复:]

做法是这样的:

在 Action的同一目录写个 Action.properties 文件

invalid.feldvalue.属性名 = "提示信息"

这样即可
[/Quote]
你这个是普通字段或者普通对象吧。List里对象的字段试过吗
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
举个例子
Action
Integer age ;


Action.properties file
invalid.fieldvalue.age = "你输入的年龄格式不对,请重新输入";


像这样.
mythling 2010-10-27
  • 打赏
  • 举报
回复
唉。。。。。。。。这个属性是个List集合,集合里是一个对象,现在是对象中的一个属性出现
类型转换错误。
大家题目看仔细点啊。
mythling 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangfeihu 的回复:]

假如你的action是 MyAction, 那么在MyAction.properties中写
invalid.fieldvalue.productItemList="提示消息"
就可以了
[/Quote]
试了不可以。这个不是普通属性好像不可以这样。
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
做法是这样的:

在 Action的同一目录写个 Action.properties 文件

invalid.feldvalue.属性名 = "提示信息"

这样即可

yangfeihu 2010-10-27
  • 打赏
  • 举报
回复
假如你的action是 MyAction, 那么在MyAction.properties中写
invalid.fieldvalue.productItemList="提示消息"
就可以了
cwmwss 2010-10-27
  • 打赏
  • 举报
回复
长整形不能自动转换吗?那看可以换成其它数据类型不?如int ,decimal

不换类型的话,试试Struts2的类型转换,自已定义个类型转换拦截器
mythling 2010-10-27
  • 打赏
  • 举报
回复
我现在的JSP页面是:

<table>
<tr class="head">
<td width="100px">
  ID
</td>
<td align="center">
产品名称
</td>
<td>
产品购买形式
</td>
<td align="center">
单价
</td>
<td>
数量
</td>


</tr>
<s:iterator value="productItemList" var="product" status="t">
<tr>
<td width="20">
<input type="hidden"
name="productItemList[${t.index}].productId"
value="${product.id}" />
<input type="checkbox" name="productItemList[${t.index}].check"
value="${product.id}"/>
${product.id}
</td>
<td width="150">
<input type="hidden"
name="productItemList[${t.index}].name"
value="${product.name}" />
${product.name}
</td>
<td align="center" width="100">
<select name="productItemList[${t.index}].buyType" id="p${t.index}"
onchange="test5(${product.id},p${t.index})">
<option value="1" selected="selected">
周期
</option>
<option value="0">
定期
</option>
</select>
</td>

<td width="50">
<input type="hidden" name="productItemList[${t.index}].price" value="${product.price}" width="20"/>${product.price}/月
</td>
<td width="10">
<s:set name="stDiv" value="#product.id"></s:set>

<div id="tp_${stDiv}" style="display: none">
<input type="text"
name="productItemList[${t.index}].sum" size="8" />
</div>

</td>
</tr>
</s:iterator>
</table>


跟你的有出入,不一样的。
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
哎呀。。你叫我怎么和你说呢。

我的那个属性的结构是 Vo.List<Object> Object.properties

只是多了第一个Vo而已.

jsp 里面的写法就是
Vo.List[0].propertiesName 因为输入框是固定数量.
mythling 2010-10-27
  • 打赏
  • 举报
回复
我这里Action的属性不是一个对象,而是一个对象集合。所以跟你的这个还是写法不一样的。
mythling 2010-10-27
  • 打赏
  • 举报
回复
我是在jsp页面需要输入数量
<input type="text"
name="productItemList[${t.index}].sum" size="8" />

发下你的jsp页面的输入框怎么写的?
小霍夫 2010-10-27
  • 打赏
  • 举报
回复
jsp 代码有用的就一句: 当然记得加 标签


<div style="color:red">
<s:fielderror></s:fielderror>
</div>



Action 里面也简单

public class JbpmHardwareApplicationAction extends ActionSupport{

// 硬件申请
private HardwareapllicationVo hardwareApplicationVo;

}

public class HardwareapllicationVo implements java.io.Serializable {

// 主健标识
private String id;

// 流水号
private String hardwareapllicationNum;

// 申请人
private UserVo applyer;

// 是否存档
private Integer isRemark;

// 备注
private String remark;

// 详细单
private List<HardwareapplicationDetailVo> detailVoList;

}



public class HardwareapplicationDetailVo implements java.io.Serializable {

// 主健标识
private Integer id;

// 名称
private String name;

// 数量
private Integer account;

// 用途
private String use;

// 单位
private String unit;



}




这样是不会有什么问题的呀_


mythling 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wolfkingty 的回复:]
那就是你的不对拉。。 如上图...怎么会没有呢。

invalid.fieldvalue.hardwareApplicationVo.detailVoList[0].account = error.

这是我实验的..
[/Quote]
能不能把你的代码贴上来,后台的,jsp的。
加载更多回复(2)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧