Struts2评估属性是否存在或其长度

时间:2010-07-11 18:20:55

标签: struts2

我有这个JSP,我将一些属性值从属性放到JavaScript数组中......它看起来像这样:

<s:iterator value="parts" status="status">
    parts[<s:property value="category.categoryId" />][<s:property value="piezaId" />] = ['<s:property value="descripcion" />', '<s:property value="disponible" />'];
</s:iterator>

但有时当没有为该部分设置类别时,它看起来像

parts[1][460] = ['Vidrio Delantero RH', '1'];
parts[1][463] = ['Vidrio trasero LH', '1'];
parts[1][465] = ['Vidrio Trasero principal', '1'];
parts[1][462] = ['Vidrio trasero RH', '1'];
parts[][512] = ['Volanta', '1'];
parts[10][599] = ['Z de gu&iacute;a', '1'];
parts[1][692] = ['Farol de bumper delantero LH', '1'];

并且在看起来像parts[][512]

的部分中打破了JavaScript

在Struts1中,我有函数logic:present,我在struts2中寻找等效/类似的东西......试过<s:if test="#category.categoryId.length() > 0">但它永远不会真实......

任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:4)

您的空值对应于空字符串category.categoryId吗?还是空值?如果是第一个,那么我会尝试<s:if test="category.categoryId.length() != 0">或在category<s:if test="category.categoryIdNonEmpty">中添加布尔方法。

我宁愿尝试使用struts标记来避免复杂的逻辑,并将其委托给操作。例如,我考虑使用另一种方法(例如partsWithId()替代getParts())过滤掉具有空categoryId的部分,然后调用<s:iterator value="partsWithId">

答案 1 :(得分:1)

我对struts2了解不多,但在简要介绍一下之后我觉得你可能需要做更多这样的事情:<s:if test="%{#category.categoryId.length() > 0}">

你有0类吗?如果没有,这是另一个选择......这绝对是一个黑客,但它应该保持js代码不破。未分类的东西将最终归入类别0。

<s:iterator value="parts" status="status">
    parts[0<s:property value="category.categoryId" />][<s:property value="piezaId" />] = ['<s:property value="descripcion" />', '<s:property value="disponible" />'];
</s:iterator>