我是挂毯的初学者,我想知道是否可以使用Java表达式作为对组件的测试

我一直在尝试这种方式,但是没有用

<t:loop source="pathologies" value="valueFromCda">
  <t:if test="valueFromCda instanceof String">


错误是以下之一:

Could not convert 'valueFromCda instanceof StrucDocList' into a component parameter binding: Error parsing property expression 'valueFromCda instanceof StrucDocList': line 1:0 no viable alternative at input 'valueFromCda'


valueFromCda和病理是我控制器中的属性:

@Property
private Object valueFromCda;

@Property
private List<Object> pathologies;


谢谢您的回答 !祝你下午愉快;)

最佳答案

默认情况下,“ test”参数需要一个property-binding。 Tapestry将查找属性“ valueFromCda instanceof String”或类似POJO的getter(布尔返回类型的“ isXXX”也可以)“ getValueFromCda instanceof String”,因为找不到这样的属性或方法,所以找不到页面/组件。

相反,您应该这样写:

tml

<t:if test="valueInstanceOfString">


零件

public boolean isValueInstanceOfString() {
    return valueFromCda instanceof String;
}

08-16 18:08