0

我正在打印 Comments 数组的前 12 个元素。打印完 12 个后,会打印一个“更多”链接。我正在使用 COMMENT_COUNT int 执行此操作,并在打印的每条评论上对其进行迭代。我想在打印“更多”链接后将 COMMENT_COUNT 的值返回为 0。

我已经保留了当前的 hack,在打印“更多”链接后我只需调用 ${clearCount()} 即可。现在发生的是打印了 12 条评论,然后打印了“更多”链接,然后打印了布尔值“true”。

我猜有很多更好的方法可以做到这一点。我正在寻找一种更好的方法来调用 ${clearCount()},或者在打印“更多”链接后将 COMMENT_COUNT 设置为 0 的更好方法。

--- 编辑添加 ----

另一个要求是 COMMENT_COUNT 只计算前 12 条可见评论(评论可能可见或不可见,取决于用户),所以有一些丑陋的嵌套 if 语句:

.tml:

<t:loop source="currentCategoryTextmedium.commentArraySorted" value="currentComment">
 //test if the current comment should be visible
 <t:if test="isCurrentCommentVisible()">         
    <t:if test="isCommentLessThan12()">
    //print first 12 visible comments
        <span>
            <a blah blah>${currentComment.blahblah}</a>
        </span>
    </t:if>     
  </t:if>                                                           
</t:loop>

<t:if test="isCommentMoreThan12()">
    //print one More link
    <span>
        <a "blah blah">MORE</a>
    </span>
</t:if>

//Clear the COMMENT_COUNT so that the right number of comments print on another element
${clearCount()}

爪哇:

public int COMMENT_COUNT; 

public boolean isCommentLessThan12() {
    if (COMMENT_COUNT < 12) {
        COMMENT_COUNT++;
        return true;
    }
    else {
    return false;
    }
}
public boolean isCommentMoreThan12() {
    COMMENT_COUNT++;
    if (COMMENT_COUNT > 12) {
        return true;
    }
    else {
    return false;
    }
}

public boolean clearCount() {
    COMMENT_COUNT= 0;
    return true;
}
4

1 回答 1

3

那是一些该死的丑陋代码!!!尝试这个:

TML

<t:loop source="topComments" value="currentComment">         
    <span>
        <a blah blah>${currentComment.blahblah}</a>
    </span>
</t:if>                                                                 
<t:if test="moreComments">
    <span>
        <a "blah blah">...</a>
    </span>
</t:if>

爪哇

@Property
private List<Comment> topComments;

@Property
private boolean moreComments;

@Property(write=false)
private SomeType currentCategoryTextmedium;

// custom setter to initialize
public void setCurrentCategoryTextmedium(SomeType current) {
    topComments = getFirst12(current.getCommentArraySorted());
    moreComments = isMoreThan12(topComments, current.getCommentArraySorted());
    currentCategoryTextmedium = current;
}
于 2013-08-22T15:54:27.897 回答