我正在尝试使用Struts填充选择。但是,我收到此错误消息:名称为com.packagename.branchImpl
的属性标签没有可用的getter方法在类中没有名为'label'的变量,因此我不知道它是如何寻找label
的
form类是一个非常典型的实体类
有关此错误发生原因的任何建议?
它可能是一个错字与<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的实例填充集合。然后lable
和value
属性对于该bean不是必需的,因为它将使用默认值。
此外,如果使用映射到操作的表单,则不需要name
属性。
没有getter方法可用于具有名称的bean的属性
我没有发布完整的错误和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时只是一个小错误。
它正在寻找标签属性,因为这就是optionsCollection
所做的:
此标记对bean集合进行操作,其中每个bean都具有label属性和value属性。可以使用此标记的label和value属性配置这些属性的实际名称。