用的是java+struts1的结构。
这段代码想实现将从数据库中读取到的问题库和答案库对应地显示在界面上,就像一张单选题试卷。每个题的单选选项数量不定,所有按钮都是灰的。如果数据库中已经有该学生的答案,就按照他的答案把对应的按钮选中。目前遗留的问题是:
1、不知道这段代码能不能实现显示试卷的功能;
2、不知道怎么写“如果数据库中已经有该学生的答案,就按照他的答案把对应的按钮选中”这个问题的实现;
3、不知道有什么逻辑错误。请高手指教!谢谢
<logic:notEmpty name="TestForm" property="lstMonsinItem">
<logic:iterate id="QuestionItems" name="TestForm"
property="lstQuestionItem">
<bean:define id="QuestionID" name="QuestionItems"
property="QuestionItemID" type="java.math.BigDecimal" />
<TR>
<TD>
<TABLE border=0 cellspacing=0 cellpadding=2
style="border-collapse:collapse;" class="list" width="650">
<logic:notEmpty name="TestForm" property="lstAnswerItms">
<logic:iterate id="answerItems" name="TestForm"
property="lstAnswerItms">
<bean:define id="answerID" name="answerItems"
property="AnswerItemID" type="java.math.BigDecimal" />
<logic:equal name="answerItems" property="QuestionID"
value="<%=QuestionID%>">
<TR>
<TD disabled><html:radio name="TestForm"
property="AnswerItemID" value="AnswerItemID"/> <bean:write name="TestForm"
property="AnswerItemName" /></TD>
</TR>
</logic:equal> </logic:iterate>
</logic:notEmpty> </TABLE>
</TD>
</TR>
</logic:iterate>
</logic:notEmpty>

解决方案 »

  1.   


    //判断试题库是否为空 TestFrom.lstMonsinItem           
    <logic:notEmpty name="TestForm" property="lstMonsinItem">
        //非空则迭代显示 TestFrom.lstQuestionItem
         <logic:iterate id="QuestionItems" name="TestForm" property="lstQuestionItem">
              //显示问题ID  TestForm.lstQuestionItem.QuestionItemID
              <bean:define id="QuestionID" name="QuestionItems" property="QuestionItemID"  type="java.math.BigDecimal" />
                  <TR>
                      <TD>
                          <TABLE border=0 cellspacing=0 cellpadding=2
                                    style="border-collapse:collapse;" class="list" width="650">
                                   //如果TestForm.lstAnswerItms 中答案非空,则迭代匹配
                                    <logic:notEmpty name="TestForm" property="lstAnswerItms">
                                        <logic:iterate id="answerItems" name="TestForm"
                                            property="lstAnswerItms">
                                            <bean:define id="answerID" name="answerItems"
                                                property="AnswerItemID" type="java.math.BigDecimal" />
                                            <logic:equal name="answerItems" property="QuestionID"
                                                value="<%=QuestionID%>">
                                                <TR>
                                                    <TD disabled><html:radio name="TestForm"
                                                        property="AnswerItemID" value="AnswerItemID"/>   <bean:write name="TestForm" property="AnswerItemName" /></TD>
                                                </TR>
                                            </logic:equal>                                    </logic:iterate>
                                    </logic:notEmpty>                            </TABLE>
                                </TD>
                            </TR>
                        </logic:iterate>
                    </logic:notEmpty>
      

  2.   

    里面的答案迭代逻辑上有点问题,应该考虑每个问题都有对应的答案,而不是把所有答案都list下
      

  3.   

    <%-- 
    题目QuestionItem qid ,listQuestionItems 是问题的List<QuestionItem>
    答案AnswerItem //对应的qid ,listQuestionItems 是答案的List<AnswerItem>
    学生答案 //aid ,listStudentsAnswerItems 是学生答案的List<StudentsAnswerItem>
    首先循环问题,
    再循环每个问题的答案
    然后循环学生的答案,把答案选种 
    --%>
    <logic:iterate id="questionItem" name="listQuestionItems">
    <logic:iterate id="answerItem" name="listAnswerItems">
          <logic:equal name="answerItem" property="QuestionID" value="${questionItem.QuestionID}">
          <logic:iterate id="studentsAnswerItem" name="listStudentsAnswerItems">
              <logic:equal name="answerItem" property="AnswerItemID" value="${studentsAnswerItem.AnswerItemID}">
          checked="checked"
          </logic:equal>
          <logic:notEqual name="answerItem" property="AnswerItemID" value="${studentsAnswerItem.AnswerItemID}">
          no check
          </logic:notEqual>   
        </logic:iterate>    
          </logic:equal>                   
    </logic:iterate>                       
    </logic:iterate>
      

  4.   

          
          <script language="JavaScript">
             for (i=0;i<document.form1.pageSelect.options.length;i++)
            {
            if(document.form1.pageSelect.options[i].value==<bean:write name="page" property="currentPage"/>)
            {
             document.form1.pageSelect.options[i].selected=true;break;
            }
             }
            </script>这个是下拉列表菜单选项选中的代码
      

  5.   

    <input type=radio <%if(javabean.getAnswer().equals("answer1")){out.println("checked");} %> disabled />
    <input type=radio <%if(javabean.getAnswer().equals("answer2")){out.println("checked");} %> disabled />
    <input type=radio <%if(javabean.getAnswer().equals("answer3")){out.println("checked");} %> disabled />
    <input type=radio <%if(javabean.getAnswer().equals("answer4")){out.println("checked");} %> disabled />