【问题标题】:Icefaces 1.8 SelectInputText String value auto-completeIcefaces 1.8 SelectInputText 字符串值自动完成
【发布时间】:2013-04-05 23:00:41
【问题描述】:

我的代码中似乎有一些愚蠢的错误,但无法弄清楚:(

我在屏幕中有一个SelectInputText 组件。从自动完成功能中选择字符串值时,我需要在PanelGrid 中显示详细信息。 SelectInputText 功能工作正常,即自动完成显示正确的值。当我从自动完成列表中选择一个值时,我无法在 PanelGrid 中显示这些值。

下面是jspx

<ice:form>
             <ice:panelGroup>
                <ice:outputText value="Name: "/>        
                <ice:selectInputText id="AutoCmpTxt"
                                     rows="#{nameBean.nameListLength}"
                                     width="300"
                                     value="#{nameBean.name}"
                                     valueChangeListener="#{nameBean.selectInputValueChanged}">
                    <f:selectItems id="AutoCmpTxtItms"
                                   value="#{nameBean.availableNames}"/>
                </ice:selectInputText>
            </ice:panelGroup>           
            <ice:panelGrid columns="2" rendered="#{studentDetail.visible }">
                <ice:outputLabel value="Name"></ice:outputLabel>
                <ice:outputText value="#{studentDetail.name }"></ice:outputText>
                <ice:outputLabel value="Age"></ice:outputLabel>
                <ice:outputText value="#{studentDetail.age }"></ice:outputText>
                <ice:outputLabel value="Gender"></ice:outputLabel>
                <ice:outputText value="#{studentDetail.gender }"></ice:outputText>
                <ice:outputLabel value="Location"></ice:outputLabel>
                <ice:outputText value="#{studentDetail.location }"></ice:outputText>
            </ice:panelGrid>
        </ice:form>

下面是NameBean.java

public class NameBean {

private List<SelectItem> availableNames;
private String name;
private int nameListLength = 3;
private StudentDetails studentDetails;

public int getNameListLength() {
    return nameListLength;
}

public NameBean() {
    availableNames = new ArrayList<SelectItem>();
    studentDetails = new StudentDetails();
}

public List<SelectItem> getAvailableNames() {
    return availableNames;
}

public void setAvailableNames(List<SelectItem> availableNames) {
    this.availableNames = availableNames;
}

public void selectInputValueChanged(ValueChangeEvent event){

    if(event.getComponent() instanceof SelectInputText){            
        SelectInputText autoComplete = (SelectInputText) event.getComponent();
        String value = (String)event.getNewValue();
        DataService service = new DataService();
        this.availableNames = service.getAvaliableNames(value);

        if (autoComplete.getSelectedItem() != null) {
            System.out.println("Selected");
            String name = (String) autoComplete.getSelectedItem().getValue();
            System.out.println("Name Selected: " + name);
            StudentDetails details = getAvaliableNames(name);
            if (details != null){
                this.studentDetails = details;
            }                
        }
        else{
            System.out.println("Still Not Selected!!!");
            StudentDetails details = getAvaliableNames(value);
            if (details != null){
                this.studentDetails = details;
            }
        }
}
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

private StudentDetails getAvaliableNames(String name){
           //This will return a StudentDetails Model with some data
}

}

StudentDetails bean 是一个只有 soem getter 和 setter 的类。

以下是托管 bean 条目:

<managed-bean>     
    <managed-bean-name>nameBean</managed-bean-name>
    <managed-bean-class>com.infy.bean.NameBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>        
</managed-bean>
<managed-bean>
    <managed-bean-name>studentDetail</managed-bean-name>
    <managed-bean-class>com.infy.bean.StudentDetails</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>        
</managed-bean> 

请让我知道我错过了什么(必须是非常愚蠢的东西:()

【问题讨论】:

    标签: java jsf servlets icefaces jsf-1.2


    【解决方案1】:

    好的,我将 PanelGrid 更改为此,它对我有用:

    <ice:panelGrid columns="2" rendered="#{nameBean.studentDetails.visible }">
                    <ice:outputLabel value="Name"></ice:outputLabel>
                    <ice:outputText value="#{nameBean.studentDetails.name }"></ice:outputText>
                    <ice:outputLabel value="Age"></ice:outputLabel>
                    <ice:outputText value="#{nameBean.studentDetails.age }"></ice:outputText>
                    <ice:outputLabel value="Gender"></ice:outputLabel>
                    <ice:outputText value="#{nameBean.studentDetails.gender }"></ice:outputText>
                    <ice:outputLabel value="Location"></ice:outputLabel>
                    <ice:outputText value="#{nameBean.studentDetails.location }"></ice:outputText>
                </ice:panelGrid>
    

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 2015-03-19
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多