我正在尝试使用Struts填充选择。但是,我收到此错误消息:
名称为com.packagename.branchImpl
的属性标签没有可用的getter方法
在它看起来的类中没有名为'label'的变量,所以我不知道它是如何寻找label
form class是一个非常典型的实体类
有关此错误发生原因的任何建议?
答案 0 :(得分:2)
<cain:optionsCollection
可能是<html:optionsCollection
可能是拼写错误。最后一个标记使用property
属性来处理具有label
和value
属性的bean集合。如果集合bean中有不同的属性名称,则可以使用标记的label
和value
属性指定它们。例如,如果您有一个集合List<MyBean>
和
public class MyBean implements Serializable {
private String key;
private String name;
//getters and setters for both
}
然后你应该使用
<html:select name="querySwiftLogForm" property="branch" >
<html:optionsCollection name="querySwiftLogForm" property="branchList" label="name" value="key"/>
</html:select>
如果您没有可以与该集合一起使用的bean,那么您可以使用LabelValueBean
。并且您需要使用该bean的实例填充集合。然后,该bean不需要lable
和value
属性,因为它将使用默认值。
此外,如果您使用映射到操作的表单,则不需要name
属性。
答案 1 :(得分:1)
没有可用于名称为
的bean的属性的getter方法
我没有发布完整的错误和jsp,所有这些只是理解
例如:
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
虽然它会是:
public void setname(String name)
{
this.name = name;
}
public String getname()
{
return name;
}
使用setter和getter时只是一个小错误。
答案 2 :(得分:0)
它正在寻找标签属性,因为这是optionsCollection
所做的:
此标记对bean集合进行操作,其中每个bean都具有label属性和value属性。可以使用此标记的label和value属性配置这些属性的实际名称。