OrderList组件一直有效,直到提交页面为止

时间:2017-03-01 16:35:36

标签: primefaces jsf-2

我有一个页面,其中orderList组件部分工作。

这是orderList

enter image description here

它有一个名称列表,并且还保存每个系统的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执行侦听器(或其他内容)的按钮就会生成此错误。

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

问题与我正在使用的对象有关。

我的应用程序列表中的应用程序是一个可以这样表示的类:

public class ApplicationNameAndId {
    String applicationId;
    String applicationName;

// CONSTRUCTOR
// GETTERS AND SETTERS HERE
}

orderList组件不处理您自己的对象类型,而是期望接收字符串列表。

List<String> ListOfStringToBeUsed

现在我已经调整了我的代码以按预期返回字符串列表。

如果有更多时间,我会创建一个自定义转换器类(使用我自己的对象类型),而不是发布如何到这里。

我希望这有助于其他人, Neliosam