gpt4 book ai didi

java - Icefaces 1.8 SelectInputText 字符串值自动完成

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:39 27 4
gpt4 key购买 nike

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

我的屏幕中有一个 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 是一个仅包含某些 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>

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

最佳答案

好的,我将 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>

关于java - Icefaces 1.8 SelectInputText 字符串值自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com