S2SH开发,Struts2的JSP中,这种写法:<s:textfield name="product.name"/>,form会接到name为“product.name”的值,但用这种写法时有如下两个不解之处:
1.怎么用jQuery做form验证?因为jQuery的基本写法是:
rules: {
name: {
required: true
},
其中“name”是form中的名称值,请教“product.name”时的验证写法。
2.文件上传在Action中怎么写?
找了很多文件上传的例子,都是的样子,这时在Action中直接声明变量:
private File myImage;
就可以,这样的myImage是没有点的写法,有点时,如“product.image”,怎么在Action中写文件上传呢?
嗯。你这样是得不到的,我上面也说了。你定义成 就好了,在action中进行上传处理,然后可以得到一个图片的路径,把他放在product的一个表示图片路径的属性了就行了。。如:
String imahePath=".....";//处理后得到的路径
product.setImagePath(imagePath);
这样就可以把这个路径存到数据库里了。
这样product.name的写法其实是product(Product)这个javabean中有个name属性。是为了方便,这样你在Action中定义一个private Product product就可以在页面使用product.name获取product中的name值,相当于调用product.getName()方法。
至于你这jquery验证我没没用过,应该是感觉文本框的name值进行验证的,我想应该可以识别“product.name”这样的name值。对于文件上传你可以直接在Action中直接声明变量private File myImage; 然后再进行处理,如果想用点就要在Product中定义一个private File image啦,在Action中可以使用product.getImage()的得到一个File进行处理。
对于加点的写法,展示的时候可以在Action直接定义private Product product,页面会展示product中的属性值。保存的时候也可以这么写private Product product,这样struts2就把前台的值直接封装到product中了,当前前台的name属性值要加点。
要是你用着不爽,可以采用不加点,直接在Action定义和页面name属性值一样的变量即可,不过这样要是form里面的字段多的话会有一大堆变量的定义啦。