我有一个.gsp页面,学生可以选择他们所在的课程。然后将该选择存储在数组列表中。我有另一个显示学生详细信息的.gsp页面,在这些详细信息中,它显示了他们从另一页面选择的课程。但是,当它显示课程时,它显示如下:“[courseName]”,但我希望它显示没有括号:“courseName”。
这是我显示选择的代码:
<g:if test="${studentDetails?.course}">
<li class="fieldcontain">
<span id="course-label" class="property-label">
<g:message code="student.course.label" default="Course(s)" /></span>
<span class="property-value" aria-labelledby="course-label">
<g:set var="course" value="${studentDetails?.course.courseName}" />
<g:message message="${course}" /></span>
</li>
</g:if>
到目前为止,我已尝试使用g:fieldValue,g:message显示变量,并且只显示没有标记的变量本身。所有方法都显示括号。任何有关如何删除括号的建议都表示赞赏。如果需要任何其他代码,我可以提供它。感谢。
答案 0 :(得分:1)
如果您的studentDetails?.course.courseName
包含List
个课程并且您想要显示所有课程,则需要将其转换为String
。但List.toString()
的默认实现使用括号。您可以使用.join(',')
代替。
像:
<g:if test="${studentDetails?.course}">
<li class="fieldcontain">
<span id="course-label" class="property-label">
<g:message code="student.course.label" default="Course(s)" /></span>
<span class="property-value" aria-labelledby="course-label">
${studentDetails.course.courseName.join(', ')}
</span>
</li>
</g:if>
此外,如果您从用户那里获得此数据(课程名称),我建议添加.encodeAsHTML()
,以转义变量内的任何HTML内容(避免使用XSS等)。像:
${studentDetails.course.courseName.join(', ').encodeAsHTML()}