如何在中获取值的值(How to get the value of a value in )

编程入门 行业动态 更新时间:2024-10-28 00:26:03
如何在中获取值的值(How to get the value of a value in )

这是我的模特学生

public class Student { List<Subject1> class1SubjectList=new ArrayList<Subject>(); List<Subject2> class2SubjectList=new ArrayList<Subject>(); List<Subject3> class3SubjectList=new ArrayList<Subject>(); List<Subject4> class4SubjectList=new ArrayList<Subject>(); List<Subject5> class5SubjectList=new ArrayList<Subject>(); List<Subject6> class6SubjectList=new ArrayList<Subject>(); List<Subject7> class7SubjectList=new ArrayList<Subject>(); List<Subject8> class8SubjectList=new ArrayList<Subject>(); List<Subject9> class9SubjectList=new ArrayList<Subject>(); }

.................................................. .............................

最多有9个类(没有类)。它可以从1到9不等。我想根据$ {noOfClasses}渲染每个类中的所有主题

<c:forEach begin="1" end="${noOfClasses}" varStatus="theCount"> <select id="selectSunject${theCount.count}onClass"> <c:forEach items="${class${theCount.count}SubjectList}" var="subject"> <!-- Looking for class1SubjectList,class2SubjectList,class3SubjectList.. --> <option value="${subject.id }" >${subject.name}</option> </c:forEach> </select> </c:forEach>

嗨,

我知道上面的代码不会工作。 我试过这个

<c:forEach begin="1" end="${noOfClasses}" varStatus="theCount"> <select id="selectSunject${theCount.count}onClass"> <c:set var="level" value="${theCount.count}"/> <c:forEach items="${class[level]SubjectList}" var="subject"> <!-- Looking for class1SubjectList,class2SubjectList,class3SubjectList.. --> <option value="${subject.id }" >${subject.name}</option> </c:forEach> </select> </c:forEach>

它显示......

${class[level]SubjectList}包含无效的表达式:javax.el.E​​LException:无法解析表达式${class[level]SubjectList}

还是行不通。 任何解决方案? 提前致谢。

This is my model Student

public class Student { List<Subject1> class1SubjectList=new ArrayList<Subject>(); List<Subject2> class2SubjectList=new ArrayList<Subject>(); List<Subject3> class3SubjectList=new ArrayList<Subject>(); List<Subject4> class4SubjectList=new ArrayList<Subject>(); List<Subject5> class5SubjectList=new ArrayList<Subject>(); List<Subject6> class6SubjectList=new ArrayList<Subject>(); List<Subject7> class7SubjectList=new ArrayList<Subject>(); List<Subject8> class8SubjectList=new ArrayList<Subject>(); List<Subject9> class9SubjectList=new ArrayList<Subject>(); }

...............................................................................

There will maximum 9 classes(No of classes).It can differ from 1 to 9.I want to render all subject in each class according to ${noOfClasses}

<c:forEach begin="1" end="${noOfClasses}" varStatus="theCount"> <select id="selectSunject${theCount.count}onClass"> <c:forEach items="${class${theCount.count}SubjectList}" var="subject"> <!-- Looking for class1SubjectList,class2SubjectList,class3SubjectList.. --> <option value="${subject.id }" >${subject.name}</option> </c:forEach> </select> </c:forEach>

Hi,

I know the above code wont work. I have tried this

<c:forEach begin="1" end="${noOfClasses}" varStatus="theCount"> <select id="selectSunject${theCount.count}onClass"> <c:set var="level" value="${theCount.count}"/> <c:forEach items="${class[level]SubjectList}" var="subject"> <!-- Looking for class1SubjectList,class2SubjectList,class3SubjectList.. --> <option value="${subject.id }" >${subject.name}</option> </c:forEach> </select> </c:forEach>

It is showing...

${class[level]SubjectList} contains invalid expression(s): javax.el.ELException: Failed to parse the expression ${class[level]SubjectList}

Still not working. any solution for this? Thanks in advance.

最满意答案

也许您可以设置列表清单。 这是演示代码。

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <c:set var="class1SubjectList" value="${['a','b','c']}" /> <c:set var="class2SubjectList" value="${['d','e','f']}" /> <c:set var="class3SubjectList" value="${['g','h','i']}" /> <c:set var="listOfLists" value="${[class1SubjectList,class2SubjectList,class3SubjectList]}" /> <c:forEach var="currentList" items="${listOfLists}"> <c:forEach var="currentItem" items="${currentList}"> ${currentItem} </c:forEach> </c:forEach>

打印abcdefgh我。 要了解语法,请参阅http://docs.oracle.com/javaee/7/tutorial/jsf-el004.htm 编辑:如果您在Student类中创建了一个列表列表并在JSTL中使用它,那会更好。 但是,您可以使用反射来完成您想要完成的任务。 不好的是你必须使用scriptlet(实际上你可以将该代码移动到自定义EL函数或标记文件中)。 这是演示代码。

package test; import java.util.*; public class Student { public List<String> class1SubjectList = new ArrayList<String>(); public List<String> class2SubjectList = new ArrayList<String>(); public List<String> class3SubjectList = new ArrayList<String>(); public Student(){ class1SubjectList.add("a"); class1SubjectList.add("b"); class1SubjectList.add("c"); class2SubjectList.add("d"); class2SubjectList.add("e"); class2SubjectList.add("f"); class3SubjectList.add("g"); class3SubjectList.add("h"); class3SubjectList.add("i"); } }

和JSP

<%@ page import="test.Student, java.lang.reflect.Field, java.util.*" %> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <% Student student = new Student(); Field[] fields = student.getClass().getFields(); List<List<String>> listOfLists = new ArrayList<List<String>>(); for(Field field: fields){ listOfLists.add((List)field.get(student)); } pageContext.setAttribute("listOfLists", listOfLists); %> <c:forEach items="${listOfLists}" var="subjectList" varStatus="theCount"> <select id="selectSubject${theCount.count}onClass"> <c:forEach var="currentItem" items="${subjectList}"> <option value="${currentItem}" >${currentItem}</option> </c:forEach> </select> </c:forEach>

Maybe you could set a list of your lists. Here is demonstration code.

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <c:set var="class1SubjectList" value="${['a','b','c']}" /> <c:set var="class2SubjectList" value="${['d','e','f']}" /> <c:set var="class3SubjectList" value="${['g','h','i']}" /> <c:set var="listOfLists" value="${[class1SubjectList,class2SubjectList,class3SubjectList]}" /> <c:forEach var="currentList" items="${listOfLists}"> <c:forEach var="currentItem" items="${currentList}"> ${currentItem} </c:forEach> </c:forEach>

That prints a b c d e f g h i. To understand syntax look at http://docs.oracle.com/javaee/7/tutorial/jsf-el004.htm Edit: It would better if you created a list of lists in your Student class and use that in your JSTL. But, you can use reflection to do what you want to accomplish. The bad part is that you must use a scriptlet(actually you could move that code into a custom EL function or a tag file). Here is demonstration code.

package test; import java.util.*; public class Student { public List<String> class1SubjectList = new ArrayList<String>(); public List<String> class2SubjectList = new ArrayList<String>(); public List<String> class3SubjectList = new ArrayList<String>(); public Student(){ class1SubjectList.add("a"); class1SubjectList.add("b"); class1SubjectList.add("c"); class2SubjectList.add("d"); class2SubjectList.add("e"); class2SubjectList.add("f"); class3SubjectList.add("g"); class3SubjectList.add("h"); class3SubjectList.add("i"); } }

and the JSP

<%@ page import="test.Student, java.lang.reflect.Field, java.util.*" %> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <% Student student = new Student(); Field[] fields = student.getClass().getFields(); List<List<String>> listOfLists = new ArrayList<List<String>>(); for(Field field: fields){ listOfLists.add((List)field.get(student)); } pageContext.setAttribute("listOfLists", listOfLists); %> <c:forEach items="${listOfLists}" var="subjectList" varStatus="theCount"> <select id="selectSubject${theCount.count}onClass"> <c:forEach var="currentItem" items="${subjectList}"> <option value="${currentItem}" >${currentItem}</option> </c:forEach> </select> </c:forEach>

更多推荐

class,SubjectList,level,<c,电脑培训,计算机培训,IT培训"/> <meta name="

本文发布于:2023-07-07 15:27:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1065190.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:在中

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!