当outputdata列表为空时,简化默认显示一行

时间:2016-01-25 03:06:56

标签: jsp jstl el

<table>
<c:if test="${output.list == nul}">
<tr><td><input type="text" /><select></select><input type="text" />
</td>
</tr>
</c:if>
<c:forEach var="iter" items="${output.list}">
<tr><td><input type="text" /><select></select><input type="text" value="${iter.getVal()}" />
</td>
</tr>
</c:forEach>
</tbody>
</table>

如果我的${list}为空,如何在不重复代码或使用javascript的情况下显示.clone行?

2 个答案:

答案 0 :(得分:2)

我不知道我是否理解你的问题。如果您想要输出包含所有内容的一行,当list为空时,请尝试下一步:

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    //Represents how you are performing data storage, yours will most likely be different
    DataObject dataObject = getItem(position);

    //NOTE: comparing strings like this can cause errors, especially in cases where the display text should be localized
    boolean isCustomer = dataObject.getTypeText().equalsIgnoreCase("customer");

    //Sets the text and hides/shows the EditText
    holder.customerView.setText(dataObject.getTypeText()); //Should be a string resource, or correctly localized
    holder.editText.setVisibility(isCustomer ? View.GONE : View.VISIBLE);
}

对于使用 <table> <c:forEach var="i" begin="0" end="${not empty list?(fn:length(list)-1):0}"> <tr class="clone"> <td> <input type="text" /> <select></select> <input type="text" value="${list[i]!=null?list[i].getVal():''}" /> </td> </tr> </c:forEach> </tbody> 命名空间,只需在文件的开头添加fn:

即可

Udate :根据问题更改进行了更改

答案 1 :(得分:1)

如果列表为空,则将空值添加到列表中。您可以在servlet或JSP中执行此操作,但在JSP中,您必须编写其他Java代码来修改列表。

<table>
<c:set var="list" value="${output.list}"/>
<c:if test="${empty list && list != null}">
  ${list.add(null)} 
</c:if>
<c:forEach var="iter" items="${list}">
<tr><td><input type="text" /><select></select><input type="text" value="${iter.getVal()}" />
</td>
</tr>
</c:forEach>
</tbody>
</table>