ПРИВЕТ,
Я делаю то, что нужно в jsp-коде, мне нужно сделать это с помощью Struts или с помощью тега JSTL, может у кого-нибудь есть соответствующая идея, пожалуйста, поделитесь ..
Ниже приведен мой код JSP.
<%
Object category = request.getAttribute("categoryDetails");
Hashtable<String, Hashtable<String, Integer>> cat = (Hashtable<String, Hashtable<String, Integer>>) category;
//out.print(cat.entrySet());
Set<String> functions = cat.keySet();
for(String fun : functions){
out.print("-----------");
out.print(fun);
out.print("-----------");
Hashtable<String, Integer> obj = cat.get(fun);
Vector<String> subFunction = new Vector<String>(obj.keySet());
Collections.sort(subFunction);
for(String str : subFunction){
out.print("#"+str+"-"+obj.get(str));
}
}
%>
Заранее спасибо.




Я бы не стал использовать ни то, ни другое, глядя на задействованную логику, я бы предпочел написать собственный тег jsp для достижения этой цели. JSTL / Struts одинаково хороши / ужасны в этом.
Вы можете использовать собственный тег или создать временную структуру представления, например:
public class FunctionView {
String functionName;
List<SubFunctionView> subfunctions;
public FunctionView(String functionName, List<SubFunctionView> subfunctions) {
this.functionName = functionName;
this.subfunctions = subfunctions;
}
public String getFunctionName() {
return functionName;
}
public void setFunctionName(String functionName) {
this.functionName = functionName;
}
public List<SubFunctionView> getSubfunctions() {
return subfunctions;
}
public void setSubfunctions(List<SubFunctionView> subfunctions) {
this.subfunctions = subfunctions;
}
}
public class SubFunctionView {
String subFunctionName;
Integer value;
public SubFunctionView(String subFunctionName, Integer value) {
this.subFunctionName = subFunctionName;
this.value = value;
}
public String getSubFunctionName() {
return subFunctionName;
}
public void setSubFunctionName(String subFunctionName) {
this.subFunctionName = subFunctionName;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
Затем вы просто публикуете метод List getFunctionsView () на своем контроллере и используете простой вложенный цикл jstl foreach.
Обновлено: пришлось немного переделать это.