Posted on 2007-01-15 20:39
sugo 阅读(305)
评论(0) 编辑 收藏
使用hibernate的hql查询,当指定某些字段时,一行数据此时得到的是相应的一个数组。而字段全部查询得到的是一个pojo对象。
使用struts的逻辑标签显示时,如果得到的是一个pojo对象,可以使用<logic:iterate>,也可以使用<logic present>使用的时候不用再定义id,name属性即为request或者session里存储的对象的别名。然后使用<bean:write>定义两个属性name和logic标签的name一样,property为对应的类中定义的成员变量名字。
如果得到的是数组的集合,则需要<logic:iterate>嵌套。例如:
<logic:iterate name="du" id="indiv" scope="session">
<logic:iterate name="indiv" id="tiny">
<bean:write name="tiny" />
</logic:iterate>
</logic:iterate>
注(个人认为):可以看到规律,下一层的name为上层的id。
得到的是集合,如List 或者Vector等。例如:
<logic:iterate scope="session" id="du" name="dlist">
<bean:write name="du" property="wdate" />
<bean:define id="text" name="du" property="content" type="String"/>
<html:link href="modify.do" paramId="id" paramName="du" paramProperty="id" linkName="mod" />
<html:button property="modify" onclick="mod.click()" value="modify" />
<html:textarea property="content" value="<%= text %>"></html:textarea><br>
<bean:write name="du" property="username" />
<bean:write name="du" property="weather" /> <br>
<html:link href="modify.do?manipulate=delete" paramId="id" paramName="du" paramProperty="id" linkName="del" />
<html:button property="delete" onclick="del.click()" value="delete" />
</logic:iterate>
例子中还包括在一个组件中填值,使用<bean:define>标签,可以得到一个对象,id就是对象的引用。
<html:link>的linkName相当于超链接<a href="">中的id属性,<html:link>的page和href的不同,page需要相对路径,url前面需要加上/,href则不用。<html:link>参数传递,如果确定需要传递的参数,直接跟在url后面即可。如果是动态的,则需要paramId, paramName, paramProperty 。第一个为参数名称,第二个为存储的对象的名字,如在request、session中存储的名字,第三个就是这个对象里面的成员变量。多个参数一般使用HashMap。
Struts中的action,即便是不想用ActionForm,也需要在action的配置属性里写入,否则会出现空值的问题,今天遇到了,所以定义DynaActionForm还是必要的。
hibernate一般的数据库操作都通过session来进行,我把所有涉及的操作都写成了一个ObjectDAO,比较方便操作。