“什么是”呢;Dojo名称文本框“;onremove事件?

“什么是”呢;Dojo名称文本框“;onremove事件?,dojo,xpages,dijit.form,Dojo,Xpages,Dijit.form,我的表单上有一个Dojo名称文本框“xe:djextNameTextBox”。单击[x]可从列表中删除一个名称。如何在不解析getComponent(“myNameBox”).getValue()中的所有值的情况下检查删除或单击的确切名称 在我看来,处理此问题的唯一方法是解析所有值,以获得确切删除名称的信息。在以前的一个项目中,我不得不处理同样的问题 XPage 设置viewScope变量“ViewFilterAssString”: 扩展库Dojo名称列表文本框控件: 托管Bean“视图

我的表单上有一个Dojo名称文本框“xe:djextNameTextBox”。单击[x]可从列表中删除一个名称。如何在不解析getComponent(“myNameBox”).getValue()中的所有值的情况下检查删除或单击的确切名称


在我看来,处理此问题的唯一方法是解析所有值,以获得确切删除名称的信息。在以前的一个项目中,我不得不处理同样的问题

XPage 设置viewScope变量“ViewFilterAssString”:


扩展库Dojo名称列表文本框控件:


托管Bean“视图控制器”
/**
*将所有筛选器转换为dojo列表文本框的可用格式
*@返回筛选器字符串
*/
公共字符串GetViewFilterAssString(){
字符串过滤器assString=“”;
用于(视图过滤器过滤器:视图过滤器){
如果(filtersAsString==“”)filtersAsString=filter.getKey();
else filtersAsString+=”,“+filter.getKey();
}
返回过滤器串;
}
public void setViewFilterAssString(字符串ViewFilterAssString){
if(viewFilterassString!=null&!viewFilterassString.equals(“”){
List currentfilters=Converter.toList(“,”,ViewFiltersAssString);
用于(视图过滤器过滤器:视图过滤器){
布尔删除=真;
用于(字符串currentFilter:currentfilters){
if(filter.getKey().equals(currentFilter)){
删除=假;
打破
}
}
如果(删除){
//用户一次只能单击一个筛选器
setActionViewFilter(viewFilters.removeFilter(filter));
打破
}
}
}否则{
setActionViewFilter(viewFilters.removeFilter(viewFilters.get(0));
}
}

提示:
viewFilters
是一个
ViewFilter
对象的
java.util.List
,而ViewFilter是一个简单的java类,它包含有关过滤器的信息(在您的例子中是一个名称)

在我看来,处理这个问题的唯一方法是解析所有值,以获得确切删除了哪个名称的信息。在以前的一个项目中,我不得不处理同样的问题

XPage 设置viewScope变量“ViewFilterAssString”:


扩展库Dojo名称列表文本框控件:


托管Bean“视图控制器”
/**
*将所有筛选器转换为dojo列表文本框的可用格式
*@返回筛选器字符串
*/
公共字符串GetViewFilterAssString(){
字符串过滤器assString=“”;
用于(视图过滤器过滤器:视图过滤器){
如果(filtersAsString==“”)filtersAsString=filter.getKey();
else filtersAsString+=”,“+filter.getKey();
}
返回过滤器串;
}
public void setViewFilterAssString(字符串ViewFilterAssString){
if(viewFilterassString!=null&!viewFilterassString.equals(“”){
List currentfilters=Converter.toList(“,”,ViewFiltersAssString);
用于(视图过滤器过滤器:视图过滤器){
布尔删除=真;
用于(字符串currentFilter:currentfilters){
if(filter.getKey().equals(currentFilter)){
删除=假;
打破
}
}
如果(删除){
//用户一次只能单击一个筛选器
setActionViewFilter(viewFilters.removeFilter(filter));
打破
}
}
}否则{
setActionViewFilter(viewFilters.removeFilter(viewFilters.get(0));
}
}

提示:
viewFilters
ViewFilter
对象的
java.util.List
,而ViewFilter是一个简单的java类,它包含有关过滤器的信息(在您的例子中是一个名称)

嗯,我认为有一个最简单的方法。。谢谢你KastenhoferWell先生我以为有个最简单的方法。。谢谢你,卡斯滕霍夫先生
    <xp:this.beforeRenderResponse><![CDATA[#{javascript:log('beforerenderresponse (start rendering)');
requestScope.start = new Date().getTime();
viewScope.put('viewFiltersAsString', viewController.getViewFiltersAsString());
viewController.actionSetPage();}]]></xp:this.beforeRenderResponse>
<xe:djextListTextBox id="djFilters" multipleSeparator=","
    value="#{viewScope.viewFiltersAsString}" displayLabel="true"
    title="Hier klicken um Filter zu löschen">
    <xe:this.dataProvider>
        <xe:simpleValuePicker caseInsensitive="false"
            labelSeparator="~" valueListSeparator=","
            valueList="#{viewController.viewFiltersLabelsAsString}">
        </xe:simpleValuePicker>
    </xe:this.dataProvider>
    <xp:eventHandler event="onChange" submit="true" refreshMode="partial"
        refreshId="${javascript:compositeData.refreshId}" execMode="partial"
        action="#{javascript:viewController.setViewFiltersAsString(@Trim(viewScope.get('viewFiltersAsString')).toString())}">
    </xp:eventHandler>
</xe:djextListTextBox>
/**
 * Converts all filters to a useable format for dojo List Textbox
 * @return string of filters
 */
public String getViewFiltersAsString() {
    String filtersAsString = "";
    for (ViewFilter filter : viewFilters) {
        if (filtersAsString == "") filtersAsString = filter.getKey();
        else filtersAsString += "," + filter.getKey();
    }
    return filtersAsString;
}

public void setViewFiltersAsString(String viewFiltersAsString) {
    if (viewFiltersAsString != null && !viewFiltersAsString.equals("")) {
        List<String> currentfilters = Converter.toList(",", viewFiltersAsString);

        for (ViewFilter filter : viewFilters) {
            boolean remove = true;
            for (String currentFilter : currentfilters) {
                if (filter.getKey().equals(currentFilter)) {
                    remove = false;
                    break;
                }
            }
            if (remove) {
                // user can click only one filter at one time
                setActionViewFilter(viewFilters.removeFilter(filter));
                break;
            }
        }

    } else {
        setActionViewFilter(viewFilters.removeFilter(viewFilters.get(0)));
    }
}