業務需求:
進入到學生具體評教頁面後,根據傳遞過來的課程類型,加載對應的考覈模板,然後查詢該考覈模板下面的所有考覈項目,同時綁定的還有每條考覈項目下的對應的選項(每條考覈項目的內容可以是不同的);當學生評完之後,如果有沒有評價的考覈項目,跳轉到未選考覈的項目那裏,進行提示。
實現:
首先實體關係映射的時候,一個考覈模板對應多條考覈項目,一條考覈項目可以對應多個考覈選項。映射關係如下考覈項目和考覈選項設置成了雙向一對多的關係:
考覈項目實體:
public class AssessContent extends BaseEntity {
@OneToMany(mappedBy="assessContent",cascade=CascadeType.ALL,targetEntity=Weight.class,fetch = FetchType.EAGER)
@JsonIgnore
private Set<Weight> weights = new HashSet<Weight>();
}
Controller:
@RequestMapping(value = "/queryAssessContentList")
public String queryAssessContentList(HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();
// 獲取前臺傳遞的參數
String studentName = new String((request.getParameter("studentName")).getBytes("iso-8859-1"),"utf-8");
String courseName = new String((request.getParameter("courseName")).getBytes("iso-8859-1"),"utf-8");
String teacherName = new String((request.getParameter("teacherName")).getBytes("iso-8859-1"),"utf-8");
String teacherId = new String((request.getParameter("teacherId")).getBytes("iso-8859-1"),"utf-8");
String studentId = new String((request.getParameter("studentId")).getBytes("iso-8859-1"),"utf-8");
String courseId = new String((request.getParameter("courseId")).getBytes("iso-8859-1"),"utf-8");
String courseTypeId = new String((request.getParameter("courseTypeId")).getBytes("iso-8859-1"),"utf-8");
String Id=new String((request.getParameter("Id")).getBytes("iso-8859-1"),"utf-8");
// 根據課程Id查詢該課程ID對應的模板ID
List<Template> templates=templateBean.queryTemplateByClassTypeId(courseTypeId);
// 獲取模板Id
String templateId=templates.get(0).getId();
map.put("templateId", templateId);
// 根據模板Id查詢對應的考覈項目
List<AssessContent> assessContentlist = assessContentBean.queryContentByTemplateId(templateId);
// 獲取待評選項的數量
int assessCount = assessContentlist.size();
// 將查詢的信息放入到request中。
request.setAttribute("Id", Id);
request.setAttribute("templateId", templateId);
request.setAttribute("teacherId", teacherId);
request.setAttribute("studentId", studentId);
request.setAttribute("courseId", courseId);
request.setAttribute("courseTypeId", courseTypeId);
request.setAttribute("assessCount", assessCount);
request.setAttribute("studentName", studentName);
request.setAttribute("courseName", courseName);
request.setAttribute("teacherName", teacherName);
request.setAttribute("assessContentlist", assessContentlist);
return "/studentAssessDetial";
}
JSP頁面:主要是通過JSTL表達式和EL表達式進行循環綁定
<body>
<form id="StudentAssessInfo" action="studentAssessResult">
<a id="tiaozhuan" href="#" style="display: none;">要跳轉到div啊</a>
<!--獲取是否評教Id -->
<input id="ifPj" type="hidden" value="${Id}">
<!--獲取待選數量 -->
<input id="hidAssessProjectCount" type="hidden" value="${assessCount}">
<!--學生學號 -->
<input id="studentId" name="studentId" type="hidden"
value="${studentId}">
<!-- 教師教工號 -->
<input id="teacherId" name="teacherId" type="hidden"
value="${teacherId}">
<!-- 課程號 -->
<input id="courseId" name="courseId" type="hidden" value="${courseId}">
<!-- 課程類型Id -->
<input id="courseTypeId" name="courseTypeId" type="hidden"
value="${courseTypeId}">
<!--模板Id -->
<input id="templateId" name="templateId" type="hidden"
value="${templateId}">
<input id="templateId" name="templateId" type="hidden"
value="${a}">
<div class="" style="border: 1px solid;">
<div id="welcome"
style="margin-left: 100px; margin-top: 30px; margin-right: 100px; margin-bottom: 30px;">
<span class="title">【${studentName}】</span>您好,歡迎使用此評教系統,請對<span
class="title">【${teacherName}】</span>老師的<span class="title">【${courseName}】</span>進行評分!
</div>
<div id="assessContent"
style="border: 1px solid; margin-left: 100px; margin-top: 30px; margin-right: 100px; margin-bottom: 30px; padding-bottom: 20px; padding-top: 20px; padding-left: 20px; padding-right: 20px;">
<div id="content">
<table id="assessDetial" cellpadding="10px">
<tbody>
<c:if test="${!empty assessContentlist}"></c:if>
<!--綁定考覈項目和每個考覈項目的選項 -->
<c:forEach items="${assessContentlist}" var="a"
varStatus="status">
<tr>
<td><div id="${status.index+1}" name="assessSelectedDiv">
<c:out value="${status.index+1}" />
、${a.assessContent}<br>
<c:forEach items="${a.weights}" var="b">
<input type="radio" name="${a.id}" value="${b.id}" id="lable${b.id}"
class="answer"><label for="lable${b.id}">${b.weightContent} </label>
<br />
</c:forEach>
</div></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div id="suggestion">
<textarea id="txtCmt" rows="6" cols="100"
style="width: 400px; font-size: 14px;">請輸入你對該老師的評價</textarea>
<br> <input id="comnit" type="button" value="提交"
οnclick="javascript:checkResult()">
</div>
</div>
<div id="footer" style="text-align: center;">
<div class="footer">
<a href="#">By@廊坊師範學院提高班</a>
</div>
</div>
</div>
</form>
</body>