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