Java Tapestry: очистка значения счетчика после a t:if test
Я печатаю первые 12 элементов массива комментариев. После того, как были напечатаны 12, печатается ссылка "Еще". Я делаю это, используя COMMENT_COUNT int, и повторяю его для каждого напечатанного комментария. Я хочу вернуть значение COMMENT_COUNT в 0 после того, как будет напечатана ссылка "Еще".
Я оставил свой текущий хак на месте, в котором я просто вызываю ${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;
}
1 ответ
Это какой-то чертовски уродливый код!!! Попробуй это:
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;
}