在Webcenter站点中,如何使用模板代码检索页面属性的值

时间:2016-08-30 19:35:36

标签: webcenter webcenter-sites

<assetset:getattributevalues name="sachin" attribute="Date_SV" listvarname="date_sv" typename="Content_Att" />

以上通常是在编写模板代码时获取 Flex 属性值的代码。事实上, typename 用于指定Flex属性类型。

Page属性的代码是什么?其次,“typename”值应该是什么来获取Page属性的值?

2 个答案:

答案 0 :(得分:2)

以下是用于获取页面属性“文章”的示例:

<%
        Session ses = SessionFactory.getSession();
        AssetDataManager mgr =(AssetDataManager) ses.getManager( AssetDataManager.class.getName() );
        AssetId id = new AssetIdImpl( "Page",new Long(ics.GetVar("cid")));
        List attrNames = new ArrayList();
        attrNames.add( "articles" );
        AssetData data = mgr.readAttributes( id, attrNames );
        AttributeData articlesData = data.getAttributeData( "articles" );
        List<AssetId> relatedArticles = null ;
        if (articlesData != null) {
            relatedArticles=(List<AssetId>) articlesData.getData();
        }
%>

但是,如果您使用的是WCS 12g,我不建议您使用此方法:最好使用控制器。新的理念是在您的groovy控制器中读取所有资产,然后使用JSTL在JSP中呈现资产的值。

以下是groovy控制器的一些代码:

public Map readAsset(String type, String name) {
    Map assetMap = newAssetReader()
    .forAssetName(type, name)
    .selectAll(true)
    .selectImmediateOnlyParents(true)
    .includeLinks(true)
    .includeLinksForBlobs(true)
    .read();
}
Map myPage = readAsset("Page","Home")
models.put("homePage",myPage)

以下是JSP中的代码:

<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"%>
<%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"%>
<%@ taglib prefix="fragment" uri="futuretense_cs/fragment.tld"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<cs:ftcs>
     Here is the full page asset : ${homePage} <br/>
     Here is just the page name : ${homePage.name} <br/>
</cs:ftcs>

享受易用性......

答案 1 :(得分:0)

<assetset:getattributevalues name="sachin" attribute="Date_SV" listvarname="date_sv" typename="PageAttribute"

typename应该是"PageAttribute",中间没有任何空格。