이 코드를 가지고 :형식 불일치는
<xe:formTable id="formTable1" formTitle="User Roles">
<xe:formRow id="formRow1" label="Category Admin">
<xe:djextNameTextBox id="edtCatAdmin" multipleSeparator="," value="#{exhibitorInfo.categoryAdmin}" />
<xe:namePicker id="namePicker1" for="edtCatAdmin">
<xe:this.dataProvider>
<xe:namePickerAggregator>
<xe:this.dataProviders>
<xe:dominoNABNamePicker addressBookSel="first" groups="false" people="true" />
<xe:dominoViewNamePicker labelColumn="mailinName" viewName="lkp_MailIn" label="Group Mailboxes" />
</xe:this.dataProviders>
</xe:namePickerAggregator>
</xe:this.dataProvider>
</xe:namePicker>
</xe:formRow>
</xe:formTable>
목표는 다중 값 이름 선택기는 오히려 자바 빈에 valies있어 저장하는 것입니다 다음 문서 필드. 따라서 이름 선택기는 이름을 쉽게 제거 할 수 있도록 xe : djextNameTextBox를 가리키고 xe : djextNameTextBox는 내 bean에 바인딩됩니다. 이 자바 코드를 사용하여
은 -public void setCategoryAdmin(ArrayList<String> categoryAdmin) {
System.out.println("Set CategoryAdmin - List");
this.categoryAdmin = categoryAdmin;
}
public void setCategoryAdmin(String categoryAdmin) {
System.out.println("Set CategoryAdmin - String");
if (!this.isBlankString(categoryAdmin)) {
ArrayList<String> al = new ArrayList<String>();
al.add(categoryAdmin);
this.setCategoryAdmin(al);
}
}
은 여러 값에 대한 잘 작동이 나타납니다. 하지만 하나의 valule 만 사용되면 오류가 발생합니다. java.lang.IllegalArgumentException : 인수 유형이 일치하지 않습니다.
나는 이것이 다중 값의 배열과 단일 값의 문자열을 반환하는 XPage와 관련이 있다고 생각합니다. 하지만이 작업을 수행하는 방법을 잘 모르겠습니다.
조언을 보내 주시면 감사하겠습니다. 감사!!
- UPDATE-- Camac이 링크 된 blogpost에서이 코드가 작동하는 것처럼 보입니다. 저도 같은 문제가이 링크에서 팁을 사용하여 기억
public Object getCategoryAdmin() {
System.out.println("getCategoryAdmin");
return this.categoryAdmin;
}
@SuppressWarnings("unchecked")
public void setCategoryAdmin(Object inputMulti) {
this.categoryAdmin = this.translateToVector(inputMulti);
}
@SuppressWarnings("unchecked")
public Vector translateToVector(Object object){
if(object instanceof String){
Vector list = new Vector();
list.add(object);
return list;
}
if(object instanceof List){
return (Vector)object;
}
return null;
}
XPage는 bean 메소드 오버로딩을 이해하지 못하고 항상 list 인자를 가진 것을 선택합니다. 카막의 대답은 해결책입니다. XPage가 항상 String 또는 List를 반환하면 좋을 것입니다. –
@PanuHaaramo : 이것은 JSF 특정 문제입니다. EL은 * Class *를 호출하여 메소드를 해석하므로 첫 번째 공용 설정자 만 사용됩니다. * getMethods() * 및 검색된 이름과 함께 발견 된 첫 번째 공용 메소드를 사용합니다. 또 다른 접근법은 Object를 처리하는 public 메소드를 가지고 private setter를 호출하는 것입니다. 그런 다음 과부하가 예상대로 작동합니다. –
이 xpages 상황은 얼마나 성가신 일입니까! 너는 나의 하루를 구했다. 고마워. 고려중인 또 다른 대답은 (그러나 구현되지 않았습니다.) 항상 제출 된 문자열의 끝 부분에 공백 값을 추가하는 것이므로 항상 배열입니다. 코드에서 공백을 무시하게하십시오. 비록 그것을 시도하지 않았습니다. – user2808054