Как создать список выбора в JSF? Пробовал перемещать элементы, используя JS / jQuery, но отправлять сообщения об ошибке «Ошибка проверки: значение недопустимо»
Я создаю веб-приложение, используя JSF 2.0, где я назначаю пользователей для просмотра проектов. Для этого у меня есть два списка. Первый список, в котором есть пользователи, которым не назначен этот проект, и список B содержат пользователей, которые назначили этот проект. И мы можем обмениваться данными.
Код у меня есть
<span>
</span>
где т.xmlns:t="http://myfaces.apache.org/tomahawk"
PersonalInformationDataBean.java
private List listOfUsers = new ArrayList();
private List listOfUsers002 = new ArrayList();
private List listOfListUsers = new ArrayList();
private List listOfListUsers002 = new ArrayList();
// above getter and setters
Iterator itr = listOfUsers.iterator();
System.out.println("list of usersssss == " + listOfUsers);
while (itr.hasNext()) {
psmtt = conn.prepareStatement("INSERT INTO patentInvite (invitedWhom, patentId, personalInfoId) VALUES (?,?,?)");
String inviteWhom = itr.next().toString();
System.out.println("to who we have invited is " + inviteWhom);
psmtt.setString(1, inviteWhom);
psmtt.setLong(2, patentId);
psmtt.setLong(3, personalInfoId);
psmtt.execute();
System.out.println("Data entered is == " + inviteWhom + "==" + patentId + "==" + personalInfoId + "==");
}
public List showAllMyRemData() {
try {
CommonBean01 commonBean = new CommonBean01();
listOfListUsers = new ArrayList();
ConnectToDatabase db = new ConnectToDatabase();
Connection conn = db.makeconnection();
PreparedStatement psmt = conn.prepareStatement("SELECT * FROM patentInvite WHERE patentId=?");
System.out.println("patent id here is " + patentId);
psmt.setLong(1, patentId);
ResultSet rs = psmt.executeQuery(), rs2 = null;
PreparedStatement pstt = null;
int dd = 0;
String listOfUser = "";
int myCounter = 0;
while (rs.next()) {
if (myCounter==0) {
listOfUser = "'" + rs.getString(2) + "'";
} else {
listOfUser = listOfUser + ",'" + rs.getString(2) + "'";
}
myCounter++;
}
System.out.println("id selected are :: " + listOfUser);
psmt = conn.prepareStatement("SELECT userid, fullName, userType FROM userDetails WHERE userid NOT IN (" + listOfUser + ")");
rs = psmt.executeQuery();
listOfListUsers = new ArrayList();
while (rs.next()) {
commonBean = new CommonBean01();
commonBean.setStatus(rs.getString(1));
commonBean.setTitle(rs.getString(2) + " [" + rs.getString(3) + "]");
listOfListUsers.add(commonBean);
System.out.println("wat say....(" + rs.getString(1) + ") -- " + rs.getString(2) + "");
}
return listOfListUsers;
} catch (Exception e) {
System.out.println("Exception = " + e);
return null;
}
}
public List showAllMyData() {
try {
CommonBean01 commonBean = new CommonBean01();
listOfListUsers = new ArrayList();
ConnectToDatabase db = new ConnectToDatabase();
Connection conn = db.makeconnection();
PreparedStatement psmt = conn.prepareStatement("SELECT * FROM patentInvite WHERE patentId=?");
System.out.println("patent id here is " + patentId);
psmt.setLong(1, patentId);
ResultSet rs = psmt.executeQuery(), rs2 = null;
PreparedStatement pstt = null;
listOfListUsers = new ArrayList();
while (rs.next()) {
System.out.println("");
pstt = conn.prepareStatement("SELECT userid, fullName, userType FROM userDetails WHERE userid=?");
pstt.setString(1, rs.getString(2));
System.out.println("setting id for " + rs.getString(1));
rs2 = pstt.executeQuery();
int dd = 0;
while (rs2.next()) {
System.out.println("inside data " + rs2.getString(2));
commonBean = new CommonBean01();
commonBean.setStatus(rs2.getString(1));
commonBean.setTitle(rs2.getString(2) + " [" + rs2.getString(3) + "]");
listOfListUsers.add(commonBean);
System.out.println("wat say here....(" + rs2.getString(1) + ") -- " + rs2.getString(2) + "");
}
}
return listOfListUsers;
} catch (Exception e) {
System.out.println("Exception = " + e);
return null;
}
}
CommonBean01.java
public class CommonBean01 {
private String title;
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CommonBean01 other = (CommonBean01) obj;
if ((this.status == null) ? (other.status != null) : !this.status.equals(other.status)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 5;
hash = 89 * hash + (this.status != null ? this.status.hashCode() : 0);
return hash;
}
}
Теперь, когда я беру пользователя из левого списка в правый список и нажимаюSave Edit Info
кнопку, я получаю ошибку как.targetCars: Validation Error: Value is not valid
Замечания :
Когда я неизменить любой список и нажатьSave Edit Info
, это работает хорошо.
Есть идеи, почему я получаю эту ошибку?
Редактировать 1Я сделал ниже изменения
public List showAllMyRemData() {
try {
CommonBean01 commonBean = new CommonBean01();
listOfListUsers002 = new ArrayList();
ConnectToDatabase db = new ConnectToDatabase();
Connection conn = db.makeconnection();
PreparedStatement psmt = conn.prepareStatement("SELECT * FROM patentInvite WHERE patentId=?");
System.out.println("patent id here is " + patentId);
psmt.setLong(1, patentId);
ResultSet rs = psmt.executeQuery(), rs2 = null;
PreparedStatement pstt = null;
int dd = 0;
String listOfUser = "";
int myCounter = 0;
while (rs.next()) {
if (myCounter==0) {
listOfUser = "'" + rs.getString(2) + "'";
} else {
listOfUser = listOfUser + ",'" + rs.getString(2) + "'";
}
myCounter++;
}
System.out.println("id selected are :: " + listOfUser);
psmt = conn.prepareStatement("SELECT userid, fullName, userType FROM userDetails WHERE userid NOT IN (" + listOfUser + ")");
rs = psmt.executeQuery();
listOfListUsers002 = new ArrayList();
while (rs.next()) {
commonBean = new CommonBean01();
commonBean.setStatus(rs.getString(1));
commonBean.setTitle(rs.getString(2) + " [" + rs.getString(3) + "]");
listOfListUsers002.add(commonBean);
System.out.println("wat say....(" + rs.getString(1) + ") -- " + rs.getString(2) + "");
}
return listOfListUsers002;
} catch (Exception e) {
System.out.println("Exception = " + e);
return null;
}
}
Тем не менее я получаю ту же ошибку.
Редактировать 2JQuery код для перемещения элементов, как показано ниже.
$(function() {
var sourceCars=$('#sourceCars option').clone();
$('#filterDis').change(function() {
var val = $(this).val();
alert("changed me=="+val+"==");
$('#sourceCars').empty();
alert("changed me=="+sourceCars+"==");
sourceCars.filter(function(idx, el) {
var found=false;
$('#targetCars option').each(function(){
if ($(this).val()===$(el).text())
found=true;
});
alert(found);
if(found)
return false;
return val === 'ALL' || $(el).text().indexOf('[' + val + ']') >= 0;
}).appendTo('#sourceCars');
$("#targetCars option").attr("selected", "selected");
});
$('#sourceCars').dblclick(function() {
$('#sourceCars option:selected').appendTo('#targetCars');
$("#targetCars option").attr("selected", "selected");
});
$('#dbleMeRight').click(function() {
$('#sourceCars option:selected').appendTo('#targetCars');
$("#targetCars option").attr("selected", "selected");
});
$('#targetCars').dblclick(function() {
var targetList=$('#targetCars option:selected');
var filterVal= $('#filterDis').val();
if( filterVal === 'ALL' || targetList.text().indexOf('[' + filterVal + ']') >= 0)
targetList.appendTo('#sourceCars');
else
targetList.remove();
var foption = $('#sourceCars option:first');
var soptions = $.makeArray($('#sourceCars option:not(:first)')).sort(function(a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
});
$('#sourceCars').html(soptions).prepend(foption);
foption.attr("selected", true).siblings("option").removeAttr("selected");
$("#targetCars option").attr("selected", "selected");
});
$('#dbleMeLeft').click(function() {
var targetList=$('#targetCars option:selected');
var filterVal= $('#filterDis').val();
if( filterVal === 'ALL' || targetList.text().indexOf('[' + filterVal + ']') >= 0)
targetList.appendTo('#sourceCars');
else
targetList.remove();
var foption = $('#sourceCars option:first');
var soptions = $.makeArray($('#sourceCars option:not(:first)')).sort(function(a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
});
$('#sourceCars').html(soptions).prepend(foption);
foption.attr("selected", true).siblings("option").removeAttr("selected");
$("#targetCars option").attr("selected", "selected");
});
});
ПРИМЕЧАНИЕ. Если переместить элемент из списка B (справа) в список A (слева), он будет работать нормально. Но когда я перемещаю элемент из списка A (слева) в список B (справа), я получаю эту ошибку.