我有一个页面,其中orderList组件部分工作。
这是orderList
它有一个名称列表,并且还保存每个系统的ID。
@ManagedBean
@ViewScoped
public class ManageApplications implements Serializable {
private List<ApplicationNameAndId> listOfApplicationsAndIds = new ArrayList<ApplicationNameAndId>();
@PostConstruct
public void init() {
populateApplications();
}
private void populateApplications() {
// HERE I LOAD THE APPLICATION'S LIST FROM THE DATABASE
listOfApplicationsAndIds = manageDbApplications.getApplicationsListFromDatabase();
}
// GETTERS AND SETTERS
public List<ApplicationNameAndId> getListOfApplicationsAndIds() {
return listOfApplicationsAndIds;
}
public void setListOfApplicationsAndIds(List<ApplicationNameAndId> listOfApplicationsAndIds) {
this.listOfApplicationsAndIds = listOfApplicationsAndIds;
}
}
这是按预期工作,直到我在页面上添加了一个用ajax = false
执行的按钮当我点击这个新按钮时,会抛出以下错误
javax.el.PropertyNotFoundException:在java.lang.String类型中找不到属性'applicationId'
这是加载orderList组件中使用的ArrayList的代码
private static final long serialVersionUID = -2031225157408650765L;
String applicationId;
String applicationName;
public ApplicationNameAndId() {
}
public ApplicationNameAndId(String appName, String appId) {
this.applicationId = appId;
this.applicationName = appName;
}
// GETTERS AND SETTERS
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(String applicationId) {
this.applicationId = applicationId;
}
public String getApplicationName() {
return applicationName;
}
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
}
这是 ApplicationNameAndId
类型public class ApplicationNameAndId实现Serializable {
<p:commandButton actionListener="#{manageApplications.selectQueuesToAddToAnExistingApplication(qmgr.queueManagerNameId)}"
oncomplete="PF('dlgAddQueuesToApplication').show();"
update=":j_idt3:addQueuesToApplicationPanel"
value="ADD QUEUE" ajax=false icon="fa fa-plus">
</p:commandButton>
我的观点是。
组件正常工作,直到我使用 ajax = false 的某个按钮。
mySheet
请注意,我所说的“按钮”与oederList组件没有任何关系。只需添加一个使用ajax = fase执行侦听器(或其他内容)的按钮就会生成此错误。
知道为什么吗?
答案 0 :(得分:0)
问题与我正在使用的对象有关。
我的应用程序列表中的应用程序是一个可以这样表示的类:
public class ApplicationNameAndId {
String applicationId;
String applicationName;
// CONSTRUCTOR
// GETTERS AND SETTERS HERE
}
orderList组件不处理您自己的对象类型,而是期望接收字符串列表。
List<String> ListOfStringToBeUsed
现在我已经调整了我的代码以按预期返回字符串列表。
如果有更多时间,我会创建一个自定义转换器类(使用我自己的对象类型),而不是发布如何到这里。
我希望这有助于其他人, Neliosam