我用作以下内容PropertyModel
的一部分DropDownChoice
:
List<String> choices = Arrays.asList(new String[] { "Library", "School Office", "Science Dept" });
String selected = "Library";
DropDownChoice<String> serviceDDC =
new DropDownChoice<String>("service", new PropertyModel(this, "choices.0"), choices);
Run Code Online (Sandbox Code Playgroud)
不知怎的,我得到了这个例外:
caused by: org.apache.wicket.WicketRuntimeException: No get method defined for class: class com.samoo.tool.pages.CreatePrintingJob expression: choices
at org.apache.wicket.util.lang.PropertyResolver.getGetAndSetter(PropertyResolver.java:481)
at org.apache.wicket.util.lang.PropertyResolver.getObjectAndGetSetter(PropertyResolver.java:332)
at org.apache.wicket.util.lang.PropertyResolver.getObjectAndGetSetter(PropertyResolver.java:242)
at org.apache.wicket.util.lang.PropertyResolver.getValue(PropertyResolver.java:95)
at org.apache.wicket.model.AbstractPropertyModel.getObject(AbstractPropertyModel.java:130)
at org.apache.wicket.Component.getDefaultModelObject(Component.java:1724)
....
Run Code Online (Sandbox Code Playgroud)
我知道表达式有问题.我一直在尝试不同的参数输入,但它仍然无法正常工作.有人可以帮忙吗?
自从您使用以来PropertyModel(this, "choices.0")
,Wicket试图choices
通过getChoices()
声明PropertyModel的类的方法来查找通过反射命名的属性.这种方法似乎并不存在com.samoo.tool.pages.CreatePrintingJob
,因为例外是陈述.
此外,如果这0
是一个索引,您应该使用[index]
表达式访问它,因为此JIRA问题建议:PropertyModel不支持仅索引属性("[0]")
但是,似乎你想初始化DropDownChoice
为第一个元素choices
.但是,如果您将DropDownChoice的模型设置为PropertyModel(this, "choices.[0"])
将以下列方式映射此DropDownChoice的选择,Wicket会做什么:
choices
列表中的第一个元素.choices
列表的第一个位置.总而言之,表示DropDownChoice
选择的后备对象将是choices
列表中的第一个元素.
因此,您可能希望为表示DDC选择的后备对象使用与选项列表无关的完全不同的模型.
List<String> choices = Arrays.asList(new String[] { "Library", "School Office",
"Science Dept" });
String selected = "Library";
IModel dropdownModel = new Model<String>(choices[0]);
DropDownChoice<String> serviceDDC =
new DropDownChoice<String>("service", dropdownModel, choices);
Run Code Online (Sandbox Code Playgroud)
您可能会发现以下链接很有用:
归档时间: |
|
查看次数: |
10202 次 |
最近记录: |