使用cmsu时:simpleSearch和cmsu:searchResultSnippet链接无法正常显示。
这是我的代码:
<c:if test="${!empty param.contentSearchPattern}">
<h1>xx results for "${fn:escapeXml(param.contentSearchPattern)}"</h1>
<ol>
<cmsu:simpleSearch query="${param.contentSearchPattern}" var="results" startLevel="1" />
<c:if test="${empty results}">
<p>No results</p>
</c:if>
<c:forEach var="node" items="${results}">
<li>
<h2><a href="${pageContext.request.contextPath}${node.handle}.html">${node.title}</a></h2>
<p class="pageResultUrl">drintranet-testdev${node.handle}.html</p>
<p><cmsu:searchResultSnippet query="${param.contentSearchPattern}" page="${node}" chars="120"/></p>
</li>
</c:forEach>
</ol>
</c:if>
因此,假设我有一个与搜索模式匹配的页面,如果这只是文本,它将正确显示该代码段。但是,如果匹配模式的文本是链接,它将显示不再链接的片段,例如“”。
我希望能够保持相同的格式。即。如果文本也是链接,则显示带有链接的文本。
此外,使用cmsu时:simpleSearch和cmsu:searchResultSnippet我想显示页面/文章的创建日期。
以下是代码:
<c:if test="${!empty param.contentSearchPattern}">
<h1>xx results for "${fn:escapeXml(param.contentSearchPattern)}"</h1>
<ol>
<cmsu:simpleSearch query="${param.contentSearchPattern}" var="results" startLevel="1" />
<c:if test="${empty results}">
<p>No results</p>
</c:if>
<c:forEach var="node" items="${results}">
<li>
<h2><a href="${pageContext.request.contextPath}${node.handle}.html">${node.title}</a></h2>
<p class="pageResultUrl">drintranet-testdev${node.handle}.html</p>
<p><cmsu:searchResultSnippet query="${fn:escapeXml(param.contentSearchPattern)}" page="${node}" chars="120"/></p>
<p>Creation Date: ${node.metaData.creationDate}</p>
</li>
</c:forEach>
</ol>
</c:if>
但它会返回创建日期行:
创作日期: java.util.GregorianCalendar中[时间= 1307354223649,areFieldsSet =真,areAllFieldsSet =真,宽大=假,区= sun.util.calendar.ZoneInfo [ID = “GMT + 01:00”,偏移量= 360万,dstSavings = 0, useDaylight =假,过渡= 0,lastRule =空],Firstdayofweek可= 2,minimalDaysInFirstWeek = 4,ERA = 1,YEAR = 2011,MONTH = 5,WEEK_OF_YEAR = 23,WEEK_OF_MONTH = 2,DAY_OF_MONTH = 6,DAY_OF_YEAR = 157,DAY_OF_WEEK = 2,DAY_OF_WEEK_IN_MONTH = 1,AM_PM = 0,HOUR = 10,HOUR_OF_DAY = 10,MINUTE = 57,SECOND = 3,微差= 649,ZONE_OFFSET = 3600000,DST_OFFSET = 0]
我正在尝试使用此类代码将此日期转换为人类可读的格式:
<cms:ifNotEmpty nodeDataName="date">
<cms:out nodeDataName="date" datePattern="MM/dd/yyyy hh:mm a" var="eventDate"/>
</cms:ifNotEmpty>
但这不起作用,因为pageDate不是我假设的nodeDataName,任何想法如何做到这一点?
答案 0 :(得分:1)
请改为<p>Creation Date: ${node.metaData.creationDate.time}</p>
,但我不知道这是否有效。 node.metaData.creationDate
的类型为java.util.Calendar,而不是java.util.Date
。
首先从日历到日期进行转换。
答案 1 :(得分:0)
SearchResultSnippet故意为HTML提供HTML,因为它不希望让您处于显示&lt; a&gt;的位置。标记在前120个字符中而不显示&lt; / a&gt;标签(可能是也可能不是前120个字符)。为了让你按照自己喜欢的方式工作,你需要重写那个类,跟踪在前120个字符中打开的所有标签,这样你就可以确保输出相应的关闭标签了。
对于日期问题,根据维基上的this page,看起来您应该可以使用&lt; cms:out&gt;像这样的标签:
&lt; cms:out nodeDataName =“mgnl:creationdate”contentNodeName =“MetaData”/&gt;