Java 从<;中选择项目后如何填充特定文本字段;h:选择一个功能表/>;JSF2.0
当用户在inputText字段中选择项并用数据库中的数据填充时,我需要这样做 我有一个选择菜单列表:Java 从<;中选择项目后如何填充特定文本字段;h:选择一个功能表/>;JSF2.0,java,jsf-2,Java,Jsf 2,当用户在inputText字段中选择项并用数据库中的数据填充时,我需要这样做 我有一个选择菜单列表: <h:selectOneMenu id="blah" value="#{controller.selected.id}" title="#{bundle.CreateTitle_id}" > <f:selectItems value="#{controller.listOfId()}" /> </h:selectOneMenu> // publi
<h:selectOneMenu id="blah" value="#{controller.selected.id}" title="#{bundle.CreateTitle_id}" >
<f:selectItems value="#{controller.listOfId()}" />
</h:selectOneMenu>
//
public ArrayList<Catalog> listOfId() {
ArrayList<Catalog> list=new ArrayList<Catalog>();
try{
String upit="select id from Catalog";
Statement st=connection.createStatement();
ResultSet rs=st.executeQuery(upit);
while(rs.next()) {
Katalog k=new Katalog();
k.setId(rs.getInt(1));
k.setName(rs.getString(2));
list.add(k);
}
disconnect();
}
catch (Exception ex) {
ex.printStackTrace();
}
return list;
}
public ArrayList listOfId(){
ArrayList=新建ArrayList();
试一试{
String upit=“从目录中选择id”;
语句st=connection.createStatement();
结果集rs=st.executeQuery(upit);
while(rs.next()){
Katalog k=新Katalog();
k、 setId(rs.getInt(1));
k、 setName(rs.getString(2));
增加(k);
}
断开连接();
}
捕获(例外情况除外){
例如printStackTrace();
}
退货清单;
}
差不多就是这样
如果有什么需要解释的,我就在这里。它认为这很容易(比如说使用ajax),但我甚至不知道如何开始这样做…您必须添加一个
f:ajax
(这是标准的,许多组件库提供扩展版本)来捕获inputText
中的更改
事件
<h:selectOneMenu id="blah" value="#{controller.selected.id}" title="#{bundle.CreateTitle_id}" >
<f:selectItems value="#{controller.listOfId()}" />
<f:ajax
event="change" <-- The event to capture. I believe that if not specified
there is a default event to capture from
each component (for inputText it would be "change")
render="myForm:foo" <-- Only repaint "blah"
listener="#{controller.myBlahListener}"
</h:selectOneMenu>
<h:inputText id="foo" value="#{controller.fooText}"/>
让我研究一下ajax,然后再给您回复。:-)这个监听器有点让人困惑,但我想我可以在几个小时内理解这一点。更新后添加了触发ajax的事件。您能给我一个您自己的简单示例吗?仅对于ajax部分,我得到了bean概念,所有的方法都很好,只是ajax部分令人困惑!我将拥有从数据库填充的SeleConemu列表。它有自己的id。我还有一个输入文本,它填充了来自一个bean的相同数据,该bean使用一个id列表(在seleconemu中),一旦列表被更改。。。。如何编写代码?:)好的,我读错了,我以前的代码是在修改文本字段时更新列表。在这里更正。很抱歉让您感到厌烦,但如果您有时间,请查看此内容:-)
public ArrayList<Catalog> listOfId() {
ArrayList<Catalog> list=new ArrayList<Catalog>();
try{
String upit="select id from Catalog";
Statement st=connection.createStatement();
ResultSet rs=st.executeQuery(upit);
while(rs.next()) {
Katalog k=new Katalog();
k.setId(rs.getInt(1));
k.setName(rs.getString(2));
list.add(k);
}
disconnect();
}
catch (Exception ex) {
ex.printStackTrace();
}
return list;
}
<h:selectOneMenu id="blah" value="#{controller.selected.id}" title="#{bundle.CreateTitle_id}" >
<f:selectItems value="#{controller.listOfId()}" />
<f:ajax
event="change" <-- The event to capture. I believe that if not specified
there is a default event to capture from
each component (for inputText it would be "change")
render="myForm:foo" <-- Only repaint "blah"
listener="#{controller.myBlahListener}"
</h:selectOneMenu>
<h:inputText id="foo" value="#{controller.fooText}"/>