양식의 이름 필드와 같은 작업을 수행하기 위해 XPage에서 새 필드를 만들고 싶습니다. TYXPages의 필드를 Names 일반 필드와 같이 만들려면 어떻게해야합니까?
답변
이 간단한 SSJS 코드 스 니펫을 사용하여 문서에 이름 필드를 만들 수 있습니다.
var n:NotesItem = doc.replaceItemValue("Field1", "Value1");
n.setNames(true);
확장 라이브러리의 이름 선택기와 DOJO 양식 컨트롤의 이름 텍스트 상자를 사용하십시오. 이름 선택 도구가 디렉토리에서 가져오고 이름 필드에 이름이 표시됩니다.
다음은 예입니다. @Implode (@Name는 ("[축약]": - : getAsObject가 : 저장된 값 getAsString이 @Name는 ("[Cannonicalize]"@ 폭발 (vlaue가))
<xe:namePicker id="namePicker1"
for="djextNameTextBox1">
<xe:this.dataProvider>
<xe:dominoNABNamePicker groups="false"
nameList="peopleByLastName">
</xe:dominoNABNamePicker>
</xe:this.dataProvider>
</xe:namePicker>
<xe:djextNameTextBox id="djextNameTextBox1"
value="#{document1.<FIELDNAME>}">
</xe:djextNameTextBox>
사용자 정의 컨버터는 가장 좋은 방법입니다 , 값), ",") - 웹 값
자바 빈 배경은 어떻습니까? ...
package converters;
import java.util.ArrayList;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import lotus.domino.Name;
import lotus.domino.NotesException;
import com.ibm.xsp.model.domino.DominoUtils;
public class NameConverter implements Converter {
private Name createName(String name) {
Name n = null;
try {
n = DominoUtils.getCurrentSession().createName(name);
} catch (NotesException e) {
e.printStackTrace();
}
return n;
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
String[] names = value.split(",");
Name name = null;
ArrayList<String> tmpNames = new ArrayList<String>();
for (int i = 0; i <= names.length - 1; i++) {
name = this.createName(names[i].trim());
try {
tmpNames.add(name.getAbbreviated());
} catch (NotesException e) {
e.printStackTrace();
}
}
return tmpNames.toString().replace("[", "").replace("]", "");
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
String[] names = value.toString().split(",");
Name name = null;
ArrayList<String> tmpNames = new ArrayList<String>();
for (int i = 0; i <= names.length - 1; i++) {
name = this.createName(names[i].trim());
try {
tmpNames.add(name.getAbbreviated());
} catch (NotesException e) {
e.printStackTrace();
}
}
return tmpNames.toString().replace("[", "").replace("]", "");
}
}
가 얼굴-config.xml 파일에 변환기를 등록 ...
<converter>
<converter-id>nameConverter</converter-id>
<converter-class>converters.NameConverter</converter-class>
</converter>
을 NameConverter라는 자바 빈을 생성 한 다음 xPage에 간단한 컨버터 필드를 만들 ..
<xp:inputText id="userName" style="width:300px">
<xp:this.converter>
<xp:converter converterId="nameConverter" />
</xp:this.converter>
</xp:inputText>
지옥처럼 단순하고 완벽하게 확장 가능합니다. Enjoy, JiKra
당신의 접근 방식의 장점은 무엇입니까? –
비즈니스 로직과 뷰의 확장 성과 분리 성 향상. NAB에서 이름을 가져 오기 위해 선택 목록이 필요한 경우 솔루션이 더 좋지만 이름 필드의 동작 (축약 된 양식으로 이름 변환) 만 필요한 경우 내 솔루션으로 충분합니다. – JiKra
값을 축약 된 형식으로 표시하려면 변환기를 사용해야합니다. 예를 들면 Google. –
지금까지 4 개의 큰 해답이 있습니다. 몇 가지 설명 : 이름이 이름 필드 여야합니까? 왜냐하면 어떤 대답은 사용할 수 없기 때문입니다. –
예, 전자 메일처럼 "namesnsf를 열어 열기"라는 이름의 필드에서 이름 필드가하는 일을 정확하게 수행하기 위해서는 Names 형식 필드 여야합니다. 나는이 일에 멍청하다! – MihaiRO