陈述下我的 问题
现在有两张表 contract planContract
contract 字段包括:id contractCode
planContract 字段包括:id contractCode planId;
一个contract中的 contractCode有多个planId
我现在想通过 contractCode 找到 对应的所有planId;
因为以前设计就有问题 现在不用hibernate关联两个类
而是根据查ID来返回相应关系, 但是怎么才能在页面显示出两表的关系呢
现在配置配置文件里没写关联 service里是这样写的
package com.ywjava.servie;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;import com.ywjava.domain.Contract;
import com.ywjava.domain.PlanContract;
import com.ywjava.utils.HibernateUtils;public class Service {
public List<Contract> findContractId(){
System.out.println("test1");
Session session =HibernateUtils.getSession();
Query query =session.createQuery("from Contract");
List<Contract> list =query.list();
System.out.println("list:"+list.toString());
return list;
}public List<PlanContract> findPlanId(String contractId){
System.out.println("test2");
Session session =HibernateUtils.getSession();
Query query =session.createQuery("from PlanContract pc where pc.contractCode =? ");
query.setString(0, contractId);
List<PlanContract> planList = query.list();
return planList;
}
}action中代码 是这样写的
package com.ywjava.action;import java.util.List;import com.opensymphony.xwork2.ActionSupport;
import com.ywjava.domain.Contract;
import com.ywjava.domain.PlanContract;
import com.ywjava.servie.Service;public class OutAction extends ActionSupport{
Service s = new Service();
private List<Contract> contractList;
private List<PlanContract> planList;
public Service getS() {
return s;
}
public void setS(Service s) {
this.s = s;
}
public List<Contract> getContractList() {
return contractList;
}
public void setContractList(List<Contract> contractList) {
this.contractList = contractList;
}
public String execute(){
contractList = s.findContractId();
for(int i = 0;i<contractList.size();i++){
String code =contractList.get(i).getContractCode();
planList =s.findPlanId(code);
}
return SUCCESS;}
}
现在的问题是 怎么在jsp页面显示出他们的关系 用struts2的迭代标签可以么我现在 在页面这样写的我如何才能显示出 一个 合同对应的多个计划编号<body>
<form action="">
<table>
<tr>
<td>计划编号</td>
<td>合同编号</td>
</tr>
<tr>
<td></td>
<td><select>
<option> </option>
</select>
</td>
</tr>
</table>
</form>
</body>PS:大家不要说关于关联配置的问题 我知道关联后直接调属性可以显示,我现在希望能通过现在这样的办法 显示到页面 谢谢
现在有两张表 contract planContract
contract 字段包括:id contractCode
planContract 字段包括:id contractCode planId;
一个contract中的 contractCode有多个planId
我现在想通过 contractCode 找到 对应的所有planId;
因为以前设计就有问题 现在不用hibernate关联两个类
而是根据查ID来返回相应关系, 但是怎么才能在页面显示出两表的关系呢
现在配置配置文件里没写关联 service里是这样写的
package com.ywjava.servie;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;import com.ywjava.domain.Contract;
import com.ywjava.domain.PlanContract;
import com.ywjava.utils.HibernateUtils;public class Service {
public List<Contract> findContractId(){
System.out.println("test1");
Session session =HibernateUtils.getSession();
Query query =session.createQuery("from Contract");
List<Contract> list =query.list();
System.out.println("list:"+list.toString());
return list;
}public List<PlanContract> findPlanId(String contractId){
System.out.println("test2");
Session session =HibernateUtils.getSession();
Query query =session.createQuery("from PlanContract pc where pc.contractCode =? ");
query.setString(0, contractId);
List<PlanContract> planList = query.list();
return planList;
}
}action中代码 是这样写的
package com.ywjava.action;import java.util.List;import com.opensymphony.xwork2.ActionSupport;
import com.ywjava.domain.Contract;
import com.ywjava.domain.PlanContract;
import com.ywjava.servie.Service;public class OutAction extends ActionSupport{
Service s = new Service();
private List<Contract> contractList;
private List<PlanContract> planList;
public Service getS() {
return s;
}
public void setS(Service s) {
this.s = s;
}
public List<Contract> getContractList() {
return contractList;
}
public void setContractList(List<Contract> contractList) {
this.contractList = contractList;
}
public String execute(){
contractList = s.findContractId();
for(int i = 0;i<contractList.size();i++){
String code =contractList.get(i).getContractCode();
planList =s.findPlanId(code);
}
return SUCCESS;}
}
现在的问题是 怎么在jsp页面显示出他们的关系 用struts2的迭代标签可以么我现在 在页面这样写的我如何才能显示出 一个 合同对应的多个计划编号<body>
<form action="">
<table>
<tr>
<td>计划编号</td>
<td>合同编号</td>
</tr>
<tr>
<td></td>
<td><select>
<option> </option>
</select>
</td>
</tr>
</table>
</form>
</body>PS:大家不要说关于关联配置的问题 我知道关联后直接调属性可以显示,我现在希望能通过现在这样的办法 显示到页面 谢谢
for(int i = 0;i<contractList.size();i++){
String code =contractList.get(i).getContractCode();
planList =s.findPlanId(code);
}
在这里面把s.findPlanId(code)赋给每一个Contract对象,然后在页面上使用双层的迭代,就能够搞定了。
怎么在页面双层迭代 用 struts的标签可以么?
如果可以 怎么弄
能不能说下 用 struts标签怎么迭代出
用的那个contractCode 做key值
planId 做value值
<s:iterator value="#contract.planList" var="plan">
</s:iterator>
</s:iterator>
或者用11L的那种方式
<ww:iterator value="contract" status="contract">
<tr>
<td width="80" class="titlenm">
<select style="width:80px">
<ww:iterator value="#contract.setPlanContract" status="plan">
<option><ww:property value="plan.planId"/></option>
</ww:iterator>
</select></td>
</ww:iterator >
但是在action中可以输出值
<table>
<c:forEach var="contract" items="${requestScope.contractList}">
<tr>
<td>计划编号:</td>
<td>
<select name="contractCode" onchange="document.forms[0].submit();">
<option value="${contract.contractCode}">${contract.contractCode}</option>
</select>
</td>
</tr>
</c:forEach>
<tr>
<td>合同编号:</td>
<td>${requestScope.contractCode}</td>
</tr>
<c:forEach var="plan" items="${requestScope.planList}">
<tr>
<td>计划编号:</td>
<td>${plan.planId}</td>
</tr>
</c:forEach>
</table>
用struts2 标签 怎么显示?
没用过struts2,只用过struts1,楼主一定要用struts2那一套标签的话,就替换了吧。