如何使XPages中的字段类似于普通字段?

如何使XPages中的字段类似于普通字段?,xpages,lotus-notes,lotus-domino,lotus,Xpages,Lotus Notes,Lotus Domino,Lotus,我想在XPages中创建一个新字段,以执行与表单中的Names字段相同的操作。 TY您可以使用这个简单的SSJS代码片段在文档中创建名称字段 var n:NotesItem = doc.replaceItemValue("Field1", "Value1"); n.setNames(true); 您可以使用这个简单的SSJS代码片段在文档中创建名称字段 var n:NotesItem = doc.replaceItemValue("Field1", "Value1"); n.setNames(

我想在XPages中创建一个新字段,以执行与表单中的Names字段相同的操作。
TY

您可以使用这个简单的SSJS代码片段在文档中创建名称字段

var n:NotesItem = doc.replaceItemValue("Field1", "Value1");
n.setNames(true);

您可以使用这个简单的SSJS代码片段在文档中创建名称字段

var n:NotesItem = doc.replaceItemValue("Field1", "Value1");
n.setNames(true);

使用扩展库的名称选择器和DOJO表单控件的名称文本框。 名称选择器从目录中抓取,名称字段显示名称

这里有一个例子

<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>

使用扩展库的名称选择器和DOJO表单控件的名称文本框。 名称选择器从目录中抓取,名称字段显示名称

这里有一个例子

<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>

自定义转换器是最佳解决方案: getAsObject:@Name(“[Cannonicize]”,@Explode(vlaue))-保存的值
getAsString:@inplade(@Name(“[缩写]”,value),“,”)-web中的值自定义转换器是最佳解决方案: getAsObject:@Name(“[Cannonicize]”,@Explode(vlaue))-保存的值
getAsString:@inplade(@Name(“[缩写]”,value),“,”)-web中的值

如何使用JavaBean背景? 创建一个名为NameConverter的java bean

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("]", "");
}
}
封装转换器;
导入java.util.ArrayList;
导入javax.faces.component.UIComponent;
导入javax.faces.context.FacesContext;
导入javax.faces.convert.Converter;
导入lotus.domino.Name;
导入lotus.domino.NotesException;
导入com.ibm.xsp.model.domino.dominutils;
公共类NameConverter实现转换器{
私有名称createName(字符串名称){
名称n=null;
试一试{
n=dominutils.getCurrentSession().createName(名称);
}捕获(注e){
e、 printStackTrace();
}
返回n;
}
公共对象getAsObject(FacesContext上下文、UIComponent组件、字符串值){
字符串[]名称=value.split(“,”);
Name=null;
ArrayList tmpNames=新的ArrayList();

对于(inti=0;i如何使用JavaBean背景? 创建一个名为NameConverter的java bean

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("]", "");
}
}
封装转换器;
导入java.util.ArrayList;
导入javax.faces.component.UIComponent;
导入javax.faces.context.FacesContext;
导入javax.faces.convert.Converter;
导入lotus.domino.Name;
导入lotus.domino.NotesException;
导入com.ibm.xsp.model.domino.dominutils;
公共类NameConverter实现转换器{
私有名称createName(字符串名称){
名称n=null;
试一试{
n=dominutils.getCurrentSession().createName(名称);
}捕获(注e){
e、 printStackTrace();
}
返回n;
}
公共对象getAsObject(FacesContext上下文、UIComponent组件、字符串值){
字符串[]名称=value.split(“,”);
Name=null;
ArrayList tmpNames=新的ArrayList();

对于(int i=0;i),您需要使用一个转换器以缩写格式显示值。例如,谷歌。到目前为止,有4个很棒的答案。一些澄清:您的名字必须是一个名称字段吗?因为这样一些答案就不能使用了。它必须是一个名称类型字段,才能完成名称字段在正常情况下所做的事情“打开名称NSF以选择它们"比如电子邮件。我是这方面的noob!MihaiRO,names字段可以做很多事情。你要找的功能是什么?我的例子是我经常使用的一个,用于提供类似于名称查找的功能。它还可以防止用户键入地址簿中不存在的名称。你需要使用转换器来显示值以缩写格式。谷歌为例。到目前为止有4个很好的答案。一些澄清:你的名字必须是一个名字字段吗?因为这样一些答案就不能使用了。它必须是一个名字类型字段才能正确地完成名字字段在正常情况下所做的事情“打开名字NSF来选择它们”比如电子邮件。我是这方面的noob!MihaiRO,名称字段可以做很多事情。你要找的功能是什么?我的例子是我经常使用的一个,它为名称查找提供类似的功能。它还可以防止用户键入地址簿中不存在的名称。你的方法的优点是什么?打赌ter可扩展性和业务逻辑与视图的分离。如果他需要一个选择列表从NAB中获取名称,您的解决方案会更好,但如果他只需要名称字段的行为(将名称翻译为缩写形式),我的解决方案已经足够好了。您的方法的优点是什么?更好的可扩展性以及业务逻辑和视图的分离。如果他需要一个选择列表从NAB中获取名称,您的解决方案就更好了,但是如果他只需要名称字段的行为(将名称翻译为缩写形式),我的解决方案就足够好了。