0

我需要按 id 过滤资产集,我的资产类型是flex asset. 我以前从来没有通过 id 这样做过,而且我一直坚持这一点。

这是我的代码:

<publication:load name="pub" field="name" value='<%= ics.GetVar("site") %>'/>
<publication:get name="pub" field="id" output="siteId"/>

<%-- Content:getasset data is a custom tag to obtain attributes form a concrete asset --%>
<content:getassetdata prefix="lov" id='<%= ics.GetVar("assetid") %>' type="LOV" attributes="LOVUser"/>
<listobject:create name="powerObject" columns="power"/>
<c:forEach items="${lov.LOVUser}" var="usu">
    <listobject:addrow name="powerObject"><listobject:argument name="power" value="${usu.id}"/></listobject:addrow>
</c:forEach>
<listobject:tolist name="powerObject" listvarname="powerList"/>

<%-- A this time, I have a powerList with all the IDs that I need to get --%>
<searchstate:create name="ssLovElements"/>
<searchstate:addstandardconstraint name="ssLovElements" attribute="id" list="powerList" />
<assetset:setsearchedassets name="asElementLovs" constraint="ssLovElements" assettypes="elementLOV" site='<%= ics.GetVar("siteId") %>' fixedlist="false"/>

    <%-- Correct number --%>
    <br/> N.Filas powerList: <ics:listget listname="powerList" fieldname="#numRows"/>

    <%-- Incorrect number (Because constraint haven't effect --%>
    N.Filas aslist: <ics:listget listname="aslist" fieldname="#numRows"/>

第一个列表有60 个元素,第二个列表有600。我需要使用这个约束来提取只需要的元素并使用多个值获取它们的属性,但我没有得到这个。有什么帮助吗?谢谢

4

1 回答 1

0

我认为您应该使用 Asset API 而不是 jstl 标签。请参阅文档

Session ses = SessionFactory.getSession();
AssetDataManager mgr = (AssetDataManager) ses.getManager(AssetDataManager.class.getName());
Condition c = ConditionFactory.createCondition( "id", OpTypeEnum.GREATER_THAN, long);
Query query = new SimpleQuery( "elementLOV", null, c, Arrays.asList( "name",  ) );
query.getProperties().setIsBasicSearch( true );
于 2017-06-01T13:11:49.723 回答