数据库是sql server
4个表是:公司,部门,小组,员工公司是根节点,然后是部门,小组,最后是员工
每个节点前有单选框这样的功能在struts2中怎么实现?
最好给一个例子
4个表是:公司,部门,小组,员工公司是根节点,然后是部门,小组,最后是员工
每个节点前有单选框这样的功能在struts2中怎么实现?
最好给一个例子
解决方案 »
- 数据类型疑惑
- 大神们,救命呀
- 急!请教一个JSP读控制台打印信息的问题
- 新手sqlserver2008测试出问题 求助
- jsp做个在线聊天室的问题
- Java天下 - 开放、共享、互助的中文Java社区
- 请指点下面代码的涵义
- 谁有bluesky35 (蓝天)整理总结的那个连接池的例子 ,急!!!
- ADO和OLEDB有什么区别?
- Spring4 MVC 发送带参数的get请求,返回404,救命啊!
- 程序使用MemCached做缓存, 服务器运行一天左右出现 log文件里出现java.lang.ClassCastException
- struts1 中actionA 和actionB 的传值问题 急急急~!!!
光使用Struts2不够吧?贴个用JDBC的例子:
Dao层:
//完成树型结构的递归读取
public class ClientTreeReader {
private StringBuffer sbTreeHTML = new StringBuffer();
//返回HTML字符串
public String getClientTreeHTMLString() {
Connection conn = null;
try {
conn = DbUtil.getConnection();
readClientTree(conn, 0, 0);
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtil.close(conn);
}
return sbTreeHTML.toString();
} //递归读取分销商树
private void readClientTree(Connection conn, int id, int level)throws SQLException {
String sql = "select * from t_client where pid=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTreeHTML.append(rs.getString("name"))
.append("<br>\n");
if ("N".equals(rs.getString("is_leaf"))) {
readClientTree(conn, rs.getInt("id"), level);
}
}
} finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
}
} //递归读取分销商树
//采用div生成树形结构
private void readClientTree(Connection conn, int id, int level)
throws SQLException {
String sql = "select * from t_client where pid=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTreeHTML.append("<div>");
sbTreeHTML.append("\n");
for (int i = 0; i < level; i++) {
sbTreeHTML.append("<img src=\"../images/white.gif\">");
sbTreeHTML.append("\n");
}
// if ("N".equals(rs.getString("is_leaf"))) {
if (Constants.NO.equals(rs.getString("is_leaf"))) {
sbTreeHTML
.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('"
+ rs.getInt("id")
+ "');\" id=\"img"
+ rs.getInt("id")
+ "\" src=\"../images/plus.gif\">");
sbTreeHTML.append("\n");
sbTreeHTML.append("<img id=\"im" + rs.getInt("id")
+ "\" src=\"../images/closedfold.gif\">");
sbTreeHTML.append("\n");
sbTreeHTML.append("<a href=\"client_node_crud.jsp?id="
+ rs.getInt("id")
+ "\" target=\"clientDispAreaFrame\">"
+ rs.getString("name") + "</a>");
sbTreeHTML.append("\n");
sbTreeHTML.append("<div style=\"display:none;\" id=\"div"
+ rs.getInt("id") + "\">");
sbTreeHTML.append("\n");
readClientTree(conn, rs.getInt("id"), level + 1);
sbTreeHTML.append("</div>");
sbTreeHTML.append("\n");
} else {
sbTreeHTML.append("<img src=\"../images/minus.gif\">");
sbTreeHTML.append("\n");
sbTreeHTML.append("<img src=\"../images/openfold.gif\">");
sbTreeHTML.append("\n");
// if ("Y1".equals(rs.getString("is_client"))) {
if (Constants.YES.equals(rs.getString("is_client"))) {
sbTreeHTML.append("<a href=\"client_crud.jsp?id="
+ rs.getInt("id")
+ "\" target=\"clientDispAreaFrame\">"
+ rs.getString("name") + "</a>");
} else {
sbTreeHTML.append("<a href=\"client_node_crud.jsp?id="
+ rs.getInt("id")
+ "\" target=\"clientDispAreaFrame\">"
+ rs.getString("name") + "</a>");
}
sbTreeHTML.append("\n");
}
sbTreeHTML.append("</div>");
sbTreeHTML.append("\n");
}
} finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
}
}
}
刚才的例子我好好修改修改再贴上来。
后台数据层代码:public TEquipmentTree[] getChildren(String treeNodeId) throws Exception {
Connection conn = getConnection();
PreparedStatement smt = conn.prepareStatement("select * from t_equipmentclass where eql_pcode ='"+treeNodeId+"'");
ResultSet rs = smt.executeQuery();
List<TEquipmentTree> childList = new ArrayList<TEquipmentTree>();
while (rs.next()) {
TEquipmentTree TEquipmentTree = new TEquipmentTree();
TEquipmentTree.setEqlCode(rs.getString("eql_code"));
TEquipmentTree.setEqlName(rs.getString("eql_name"));
TEquipmentTree.setEqlPcode(rs.getString("eql_pcode"));
TEquipmentTree.setEqlLevel(rs.getInt("eql_level"));
TEquipmentTree.setEqlRe(rs.getString("eql_re"));
TEquipmentTree.setChildEquipment(getChildren(TEquipmentTree.getEqlCode()));
childList.add(TEquipmentTree);
}
rs.close();
smt.close();
conn.close();
TEquipmentTree[] childResult = new TEquipmentTree[childList.size()];
childResult = childList.toArray(childResult);
return childResult;
}public TEquipmentTree[] getAllTEquipmentTree() throws Exception {
String sql="select * from T_Equipmentclass where EQL_PCODE='EEW1001'";
Connection conn = getConnection();
PreparedStatement smt = conn.prepareStatement(sql);
ResultSet rs = smt.executeQuery();
List<TEquipmentTree> TEquipmentTreeList = new ArrayList<TEquipmentTree>();
while (rs.next()) {
TEquipmentTree TEquipmentTree = new TEquipmentTree();
TEquipmentTree.setEqlCode(rs.getString("EQL_CODE"));
TEquipmentTree.setEqlName(rs.getString("EQL_NAME"));
TEquipmentTree.setEqlPcode(rs.getString("EQL_PCODE"));
TEquipmentTree.setEqlLevel(rs.getInt("EQL_LEVEL"));
TEquipmentTree.setEqlRe(rs.getString("EQL_REMARK"));
TEquipmentTree.setChildEquipment(getChildren(TEquipmentTree.getEqlCode()));
TEquipmentTreeList.add(TEquipmentTree); }
rs.close();
smt.close();
conn.close();
TEquipmentTree[] TEquipmentTree = new TEquipmentTree[TEquipmentTreeList.size()];
TEquipmentTree = TEquipmentTreeList.toArray(TEquipmentTree);
return TEquipmentTree;
}前台页面:<s:head theme="ajax"/>
<script type="text/javascript">
function treeNodeSelected(arg) {
window.returnValue=arg.source.title+","+arg.source.widgetId;
window.close();
//arg.source.widgetId+","
//window.opener.document.getElementById("eqlCode").value=arg.source.widgetId;
//alert(arg.source.title);
//window.opener.document.getElementByName("eqlName").value=arg.source.title;
//alert("id["+arg.source.widgetId+"], name["+ arg.source.title+ "] selected");
}
dojo.addOnLoad(function() {
var s = dojo.widget.byId('tree').selector;
dojo.event.connect(s, 'select', 'treeNodeSelected');
});
</script>
</head>
<body>
<s:form>
<s:tree id="tree"
rootNode="root"
nodeIdProperty="eqlCode"
nodeTitleProperty="eqlName"
childCollectionProperty="childEquipment"
treeSelectedTopic="treeSelected"
theme="ajax"
showRootGrid="false">
</s:tree>
</s:form>