我用作以下内容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 次 |
| 最近记录: |