Java 如何检索可编辑数据表中存在的多个自动完成值

Java 如何检索可编辑数据表中存在的多个自动完成值,java,jsf,primefaces,jsf-2,Java,Jsf,Primefaces,Jsf 2,我有一个数据表,其中一列包含多个自动完成 <h:form id="form"> <p:dataTable id="dTable" var="il" value="#{assignIssueController.issueList}" editable="true" style="margin-bottom:20px"> <f:facet name="header">

我有一个数据表,其中一列包含多个自动完成

    <h:form id="form">
        <p:dataTable id="dTable" var="il"
            value="#{assignIssueController.issueList}" editable="true"
            style="margin-bottom:20px">
            <f:facet name="header">
                Assign Issues
            </f:facet>

            <p:ajax event="rowEdit" listener="#{assignIssueController.onRowEdit}"
                update=":form:dTable" />
            <p:ajax event="rowEditCancel" listener="#{assignIssueController.onRowCancel}" />

            <p:column headerText="Issue Number">
                <h:outputText value="#{il[0]}" />
            </p:column>

            <p:column headerText="Issue Discribtion">
                <h:outputText value="#{il[1]}" />
            </p:column>

            <p:column headerText="Issue Type">
                <h:outputText value="#{il[2]}" />
            </p:column>

            <p:column headerText="Updated By">
                <h:outputText value="#{il[4]}" />
            </p:column>
            <p:column style="display: none">
                <f:facet name="output">
                    <h:outputText value="#{il[5]}" />
                </f:facet>
            </p:column>

            <p:column headerText="Updated By">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{il[3]}" id="userIdTest" />
                    </f:facet>
                    <f:facet name="input">
                        <p:autoComplete id="themes" multiple="true"
                            value="#{assignIssueController.selectedUserList}" completeMethod="#{assignIssueController.complete}"
                            var="usr" itemLabel="#{usr.userId}" itemValue="#{usr}" converter="userConverter"
                            forceSelection="true">
                        </p:autoComplete>
                    </f:facet>
                </p:cellEditor>
            </p:column>

            <p:column style="width:32px">
                <p:rowEditor />
            </p:column>
        </p:dataTable>
    </h:form>

分配问题
我的转换器-用户转换器

@ManagedBean(name = "userConverter")
@RequestScoped
@FacesConverter(value = "userConverter")
public class UserConverter implements Converter {
    public static Logger logger = Logger.getLogger(UserConverter.class);

    @ManagedProperty(value = "#{issueBoImpl}")
    private IssueBo issueBo;

    public IssueBo getIssueBo() {
        return issueBo;
    }

    public void setIssueBo(IssueBo issueBo) {
        this.issueBo = issueBo;
    }

    public List<Users> usersList;

    public List<Users> getUsersList() {
        return usersList;
    }

    public void setUsersList(List<Users> usersList) {
        this.usersList = usersList;
    }

    @SuppressWarnings("unchecked")
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1,
            String submittedValue) {
        logger.debug("Entering in getAsObject() method");
        if (submittedValue.trim().equals("")) {
            logger.debug("Exiting from getAsObject() method");
            return null;
        } else {
            try {
                //int number = Integer.parseInt(submittedValue);

                usersList = issueBo.getAllUser();

                for (Users u : usersList) {

            if (u.getUserId() == Integer.parseInt(submittedValue)) {
                        return u;
                    }
                }
                logger.debug("Exiting from getAsObject() method");
            } catch (Exception e) {
                logger.error("Exception in getAsObject() ", e);
                throw new ConverterException(new FacesMessage(
                        FacesMessage.SEVERITY_ERROR, "Conversion Error",
                        "Email Id Does Not Exist."));
            }
        }
        logger.debug("Exiting from getAsObject() method");
        return null;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
        logger.debug("Entering in getAsString() method");
        if (value == null || value.equals("")) {
            logger.debug("Exiting from getAsString() method");
            return "";
        } else {
            logger.debug("Exiting from getAsString() method");
            return String.valueOf(((Users) value).getId());
        }
    }
}
@ManagedBean(name=“userConverter”)
@请求范围
@facescoverter(value=“userConverter”)
公共类UserConverter实现转换器{
公共静态记录器Logger=Logger.getLogger(UserConverter.class);
@ManagedProperty(value=“#{issueBoImpl}”)
私人发行人发行人;
公开发行{
返回发行人;
}
公开作废setIssueBo(IssueBo IssueBo){
this.issueBo=issueBo;
}
公共列表用户列表;
公共列表getUsersList(){
返回用户列表;
}
公共void setUsersList(列表usersList){
this.usersList=usersList;
}
@抑制警告(“未选中”)
@凌驾
公共对象getAsObject(FacesContext arg0、UIComponent arg1、,
字符串提交值){
debug(“输入getAsObject()方法”);
if(submittedValue.trim()等于(“”){
debug(“退出getAsObject()方法”);
返回null;
}否则{
试一试{
//int number=Integer.parseInt(submittedValue);
usersList=issueBo.getAllUser();
用于(用户u:usersList){
if(u.getUserId()==Integer.parseInt(submittedValue)){
返回u;
}
}
debug(“退出getAsObject()方法”);
}捕获(例外e){
错误(“getAsObject()中的异常”,e);
抛出新ConverterException(新面孔消息(
FacesMessage.SEVERITY_错误,“转换错误”,
“电子邮件Id不存在。”);
}
}
debug(“退出getAsObject()方法”);
返回null;
}
@凌驾
公共字符串getAsString(FacesContext arg0,UIComponent arg1,对象值){
debug(“输入getAsString()方法”);
if(value==null | | value.equals(“”){
debug(“退出getAsString()方法”);
返回“”;
}否则{
debug(“退出getAsString()方法”);
返回字符串.valueOf(((用户)值).getId());
}
}
}
我的控制器类

@ManagedBean(name = "assignIssueController")
@ViewScoped
public class AssignIssueController implements Serializable {
    public static Logger logger = Logger
            .getLogger(AssignIssueController.class);

    @ManagedProperty(value = "#{issueBoImpl}")
    private IssueBo issueBo;
    @ManagedProperty(value = "#{assignIssueBoImpl}")
    private AssignIssueBo assignIssueBo;
    @ManagedProperty(value = "#{usersBoImpl}")
    private UsersBo usersBo;

    private List<Users> userList;
    private List<Object> issueList;
    private List<Users> selectedUserList;

    private int id;

    @PostConstruct
    public void init() {
        issueList = assignIssueBo.getIssueListForAssigingIssue();
    }

    public void onRowEdit(RowEditEvent event) {
         System.out.println(event.getObject());
         System.out.println("----------------------->>>>>>>>>>>>>"+selectedUserList);

         Object[] obj = (Object[]) event.getObject();
         String issueNum = obj[0].toString();
         String issueDesc = obj[1].toString();
         int issueStatusId = Integer.valueOf(obj[5].toString());
         assignIssueBo.assignUpdateIssueToUsers(issueNum, issueDesc, id,issueStatusId);
         issueList = assignIssueBo.getIssueListForAssigingIssue();
    }

    public void onRowCancel(RowEditEvent event) {
        System.out.println(event.getObject());
         System.out.println("----------------------->>>>>>>>>>>>>");
    }

    public List<Users> complete(String query) {
        logger.debug("Entering in complete() method");

        List<Users> userNameList = usersBo.getUserNameList(query);

         List<Users> filteredList = new ArrayList<Users>();

            for (int i = 0; i < userNameList.size(); i++) {
                Users userObj = userNameList.get(i);
                if(userObj.getUserId().toLowerCase().startsWith(query)) {
                    filteredList.add(userObj);
                }
            }
            return filteredList;
    }

    public IssueBo getIssueBo() {
        return issueBo;
    }

    public void setIssueBo(IssueBo issueBo) {
        this.issueBo = issueBo;
    }

    public AssignIssueBo getAssignIssueBo() {
        return assignIssueBo;
    }

    public void setAssignIssueBo(AssignIssueBo assignIssueBo) {
        this.assignIssueBo = assignIssueBo;
    }

    public List<Object> getIssueList() {
        return issueList;
    }

    public void setIssueList(List<Object> issueList) {
        this.issueList = issueList;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public List<Users> getUserList() {
        return issueBo.getAllUser();
    }

    public void setUserList(List<Users> userList) {
        this.userList = userList;
    }

    public UsersBo getUsersBo() {
        return usersBo;
    }

    public void setUsersBo(UsersBo usersBo) {
        this.usersBo = usersBo;
    }

    public List<Users> getSelectedUserList() {
        return selectedUserList;
    }

    public void setSelectedUserList(List<Users> selectedUserList) {
        this.selectedUserList = selectedUserList;
    }


}
@ManagedBean(name=“assignIssueController”)
@视域
公共类AssignIssueController实现可序列化{
公共静态记录器=记录器
.getLogger(AssignIssueController.class);
@ManagedProperty(value=“#{issueBoImpl}”)
私人发行人发行人;
@ManagedProperty(value=“#{assignIssueBoImpl}”)
私人转让银行转让银行;
@ManagedProperty(value=“#{usersBoImpl}”)
私人用户sbo UsersBo;
私有列表用户列表;
私人上市发行人;
私有列表selectedUserList;
私有int-id;
@施工后
公共void init(){
issueList=assignIssueBo.getissuelistforassisingissue();
}
公共无效onRowEdit(RowEditEvent事件){
System.out.println(event.getObject());
System.out.println(“-------------------------->>>>>>>>>>>”+所选的编辑列表);
对象[]obj=(对象[])事件。getObject();
字符串issueNum=obj[0]。toString();
字符串issueDesc=obj[1]。toString();
int issueStatusId=Integer.valueOf(obj[5].toString());
assignIssueBo.AssignUpdatesSuetousers(issueNum、issueDesc、id、issueStatusId);
issueList=assignIssueBo.getissuelistforassisingissue();
}
公共作废onRowCancel(RowEditEvent事件){
System.out.println(event.getObject());
System.out.println(“-------------------------->>>>>>>>”;
}
公共列表完成(字符串查询){
debug(“输入complete()方法”);
List userNameList=usersBo.getUserNameList(查询);
List filteredList=新建ArrayList();
对于(int i=0;i