I'm implementing functionality in SDL Tridion 2013 where the user is able to utilise a filter which in turn queries the broker for matching criteria and then returns the Component Presentations to the page. Each item returned contains a Dynamic link.
(the dynamic CPs were stored in the broker DB as HTML fragments by publishing.)
When I publish DCP and access the page used DCP, HTML tag which is used Tridion Tag is disappear.(refer to output HTML.)
To solve the above problem, I refer to the follow site. But i can't solove.
So, Please tell me how to solve the above problem.
The Java code is below.
package com.tridion.tag.news;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import com.tridion.broker.querying.*;
import com.tridion.broker.querying.criteria.*;
import com.tridion.broker.querying.criteria.metadata.*;
import com.tridion.dynamiccontent.ComponentPresentationAssembler;
public class NewsSearch implements Tag {
private PageContext pageContext;
private Tag parentTag;
private String criteria;
private ComponentPresentationAssembler cpAssembler;
private String componentId;
private String componentTemplateURI = "tcm:19-1149-32";
@Override
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
@Override
public Tag getParent() {
return this.parentTag;
}
@Override
public void setParent(Tag parentTag) {
this.parentTag = parentTag;
}
public void setCriteria(String criteria) {
this.criteria = criteria ;
}
@Override
public int doStartTag() throws JspException {
try {
JspWriter writer=pageContext.getOut();
// create criteria
CustomMetaKeyCriteria keyCriteria = new CustomMetaKeyCriteria("date");
CustomMetaValueCriteria modelCriteria = new CustomMetaValueCriteria(keyCriteria, criteria, "yyyy",Criteria.NOT_EQUAL);
// create query
Query query = new Query(modelCriteria);
// execute query
String[] queryResult = query.executeQuery();
if (queryResult != null) {
int count = queryResult.length;
cpAssembler = new ComponentPresentationAssembler(22);
for (int i = 0; i < count; i++) {
componentId = queryResult[i];
writer.print(cpAssembler.getContent(componentId, componentTemplateURI));
}
}
} catch (Exception e) {
throw new JspException(e.getMessage());
}
return SKIP_BODY;
}
@Override
public int doEndTag() throws JspException {
return 0;
}
@Override
public void release() {
}
}
The DWT code (PT) is below.(For the debug, the criteria is fixed value(2014).)
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="cd_tags" prefix="tridion" %>
<%@ taglib uri="cd_tags" prefix="news" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>test</head>
<body>
<news:NewsSearch criteria="2014" />
</body>
</html>
The DWT code (CT) is below.
<tr>
<th><img src="@@newsImage@@" alt="@@newsImageAlt@@" width="70" height="14" /></th>
<td class="date">@@date@@</td>
<td><ul>
<li><a tridion:href="@@Component.ID@@">@@RenderComponentField("Fields.title",0)@@</a></li>
</ul></td>
</tr>
The output HTML is below.
<span><!-- Start Component Presentation: {"ComponentID" : "tcm:22-1226", "ComponentModified" : "2014-03-24T10:35:48", "ComponentTemplateID" : "tcm:22-1149-32", "ComponentTemplateModified" : "2014-03-19T13:21:02", "IsRepositoryPublished" : true } -->
<tr>
<th><img src="/ms/Images/press_icon.gif" alt="press" width="70" height="14" /></th>
<td class="date">2014年03月04日</td>
<td><ul>
<li></li>
</ul></td>
</tr>