struts html:text标签 从页面返回到后台时如果这个值是Long类型的变量并且没有填值,传到后台会被赋值成默认值0。
不知道这个问题能不能解决。
例如:<html:text styleId="atmMaximumBurstSize" property="atmMaximumBurstSize"/>
如果改成<input type="text" id="atmSustainableCellRate" name="atmSustainableCellRate" value="<bean:write name="form" property="atmSustainableCellRate" />"/>还是存在这个问题。
是不是因为struts解析标签的时候把“Long”类型转换成原生类型“long”才出来的默认值?不知道有没有办法解决。
不知道这个问题能不能解决。
例如:<html:text styleId="atmMaximumBurstSize" property="atmMaximumBurstSize"/>
如果改成<input type="text" id="atmSustainableCellRate" name="atmSustainableCellRate" value="<bean:write name="form" property="atmSustainableCellRate" />"/>还是存在这个问题。
是不是因为struts解析标签的时候把“Long”类型转换成原生类型“long”才出来的默认值?不知道有没有办法解决。
判断是不是null,如果是null的话,说明就是没填,你在进行你自己的处理了。
也不知道你是不是这个目的
step1:这个值本来就是null的,传到页面用标签<html:text styleId="atmMaximumBurstSize" property="atmMaximumBurstSize"/>显示也是空的。step2:提交页面,从actionform中用getAtmMaximumBurstSize()获取这个值就变成“0”了。
我不想要这个零,还想要null值。
用request.getParamterValue(“atmMaximumBurstSize”);我还没试,但是我不想这么用,页面中这种值太多了,起码有几十个,每个都这么做太麻烦
大家帮忙想想办法吧,这个问题困扰我好久了,网上找了好久也没找到办法。
String atmMaximumBurstSize = getAtmMaximumBurstSize()== 0 ? "" : getAtmMaximumBurstSize()+ "";
可以把这句话改成:
<input type="text" id="atmSustainableCellRate" name="atmSustainableCellRate" value="atmSustainableCellRate==0?null:atmSustainableCellRate"/>
总之,对插入的sql进行动态的判断
写拦截器 拦截你的这个参数 (在拦截方法(Convert_text_Null)里)对它做统一的处理。
struts1版本则此法无效。
但我不明白的是楼主为什么在formbean里面要用Long型的数据,你用一个String不就行了吗?在页面里面验证一下,再在formbean里面验证一下,action里面把String改成Long也不难啊。。
<input type="text" id="atmSustainableCellRate" name="atmSustainableCellRate" value="${form.atmSustainableCellRate==0?"":form.atmSustainableCellRate}"/>