我是Struts2和jQuery的新手。
我尝试使用TreeTag
struts2-jquery创建一个树。
但我试着做两个级别。
这是我的代码。
在行动中。
public class TreeCategoriasAction extends ActionSupport {
private static final long serialVersionUID = 1421993767228006685L;
private FMCategorias fMCategorias;
public FMCategorias getCategorias() { return fMCategorias; }
private TreeNode nodes = new TreeNode();
public String execute() throws Exception {
SmpConsultaCategorias smpConsultaCategorias = new SmpConsultaCategorias();
smpConsultaCategorias.setCategoriaFilter(new SoCategoriaFilter());
smpConsultaCategorias.getCategoriaFilter().setCoIdioma(ActionContext.getContext().getLocale().getLanguage().toUpperCase());
SWGestionarCategoriasProxy proxy = new SWGestionarCategoriasProxy(TiendaWebProperties.getProperty(TiendaWebProperties.SERVICIO_CATEGORIAS_ENDPOINT));
SoCategoria[] soCategoriaArray = proxy.consultaCategorias(smpConsultaCategorias);
fMCategorias = Mapeador.mapear(soCategoriaArray);
ServletActionContext.getRequest().setAttribute("categorias", fMCategorias);
nodes.setId("Categorias");
nodes.setState(TreeNode.NODE_STATE_OPEN);
nodes.setTitle("Categorias");
TreeNode [] nodo = new TreeNode[soCategoriaArray.length];
Collection<TreeNode> children = new ArrayList<TreeNode>();
for (int i = 0; i < soCategoriaArray.length; i++) {
if (soCategoriaArray[i].getIdCategoriaPadre() == null) {
nodo[i]=new TreeNode();
nodo[i].setId(soCategoriaArray[i].getIdCategoria());
nodo[i].setState(TreeNode.NODE_STATE_OPEN);
nodo[i].setTitle(soCategoriaArray[i].getDeCategoria());
children.add(nodo[i]);
for (int j = 0; j < soCategoriaArray.length; j++){
if (soCategoriaArray[j].getIdCategoriaPadre() == soCategoriaArray[i].getIdCategoria()){
Collection<TreeNode> children2 = new ArrayList<TreeNode>();
nodo[j]=new TreeNode();
nodo[j].setId(soCategoriaArray[j].getIdCategoria());
nodo[j].setState(TreeNode.NODE_STATE_CLOSED);
nodo[j].setTitle(soCategoriaArray[j].getDeCategoria());
children2.add(nodo[j]);
nodo[i].setChildren(children2);
}
}
}
nodes.setChildren(children);
}
return SUCCESS;
}
public TreeNode getNodes() {
return nodes;
}
}
在jsp中
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="sjt" uri="/struts-jquery-tree-tags"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<sj:head jqueryui="true" customBasepath="css" jquerytheme="jquery_tree_ui"debug="true" />
<s:url var="treeCategoriasUrl" action="TreeCategorias.action"/>
<sjt:tree
id="treeDynamicAjax"
jstreetheme="apple"
rootNode="nodes"
nodeHref="%{echo}"
nodeTitleProperty="title"
nodeIdProperty="id"
nodeHrefParamName="echo"
childCollectionProperty="children"
/>
<s:iterator value=#nodo[i]>
<sjt:tree
id="treeDynamicAjax2"
jstreetheme="apple"
rootNode="#nodo[i]"
nodeHref="%{echo}"
nodeTitleProperty="title"
nodeIdProperty="id"
nodeHrefParamName="echo"
childCollectionProperty="children2"
/>
</s:iterator>
仅适用于第一个树和第一个树。
有人能帮助我吗?
答案 0 :(得分:0)
行动中
nodes.setId("Bricor");
nodes.setState(TreeNode.NODE_STATE_OPEN);
nodes.setTitle("Bricor");
getTreeNode (soCategoriaArray, nodes, null);
private void getTreeNode(SoCategoria[] soCategoriaArray, TreeNode nodoPadre, String idCategoriaPadre) {
List<TreeNode> nodos = new ArrayList<TreeNode>();
for (int i = 0; i < soCategoriaArray.length; i++){
if ((idCategoriaPadre == null && soCategoriaArray[i].getIdCategoriaPadre() == null) || (soCategoriaArray[i].getIdCategoriaPadre() != null && soCategoriaArray[i].getIdCategoriaPadre().equals(idCategoriaPadre))){
TreeNode nodo = new TreeNode();
nodo.setId(soCategoriaArray[i].getIdCategoria());
nodo.setState(TreeNode.NODE_STATE_OPEN);
nodo.setTitle(soCategoriaArray[i].getDeCategoria());
nodos.add(nodo);
getTreeNode(soCategoriaArray, nodo, soCategoriaArray[i].getIdCategoria());
}
}
nodoPadre.setChildren(nodos);
}
在jsp中
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="sjt" uri="/struts-jquery-tree-tags"%>
%@taglib prefix="s" uri="/struts-tags" %>
<sj:head jqueryui="true" customBasepath="css" jquerytheme="jquery_tree_ui" debug="true" />
<s:url var="treeCategoriasUrl" action="TreeCategorias.action"/>
<sjt:tree
id="treeDynamicAjax"
jstreetheme="apple"
rootNode="nodes"
nodeHref="%{echo}"
nodeTitleProperty="title"
nodeIdProperty="id"
nodeHrefParamName="echo"
childCollectionProperty="children"
/>