各位大侠,帮帮忙看看!我的ValueListener不起作用
<ice:form>
<ice:panelGroup >
<ice:selectOneMenu id="database" partialSubmit="true" value="#{dataBaseAdmin.selectValue}"
onfocus="this.name='database'" style="width:120px" onchange="submit();"
valueChangeListener="#{dataBaseAdmin.updatePage}" >
<f:selectItem itemLabel="请选择表名" itemValue=""/>
<f:selectItems value="#{dataBaseAdmin.dataBaseTables}" />
</ice:selectOneMenu>
</ice:panelGroup>
<ice:panelSeries var="columns" value="#{dataBaseAdmin.columnsName}" style="float:left;width:30px;">
<ice:outputText value="#{columns}"/>
</ice:panelSeries>
<ice:outputText value="#{dataBaseAdmin.testingstring}" ></ice:outputText>
</ice:form>
上面是xhtml里面的 selectOneMenu 在change的时候调用DataBaseAdmin里面的updatePage Listener
DataBaseAdmin.java
package org.openi.web.ui.jsf.bean.admin;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import org.openi.web.ui.jsf.service.search.SearchInfoDao;
public class DataBaseAdmin {
SearchInfoDao sid;
DatabaseMetaData rsmt = null;
List dataModel = null;
String[] columnsName;
String testingstring = "123";
String selectValue = "";
public DataBaseAdmin () {
System.out.println("Initialized");
}
// public void getConnectioned() {
// try {
// Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
// System.out.println("connect successful");
// } catch (InstantiationException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IllegalAccessException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (ClassNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//
// public void setSid(SearchInfoDao sid) {
// this.sid = sid;
// }
public String getTestingstring() {
return testingstring;
}
public String getSelectValue() {
return selectValue;
}
public void setSelectValue(String selectValue) {
this.selectValue = selectValue;
}
public void setTestingstring(String testingstring) {
this.testingstring = testingstring;
}
public void setSid(SearchInfoDao sid) {
this.sid = sid;
}
/**
* Comments:
* @author Jacky
* Chinese : 返回所有dim开头的table
* @return
*/
@SuppressWarnings("unchecked")
public SelectItem[] getDataBaseTables() {
String sql = "select t.TABLE_NAME name,t.COMMENTS comments from MGR_TABLE_COMMENTS t where t.TABLE_NAME like '%'||'DIM'||'%'";
List<Map<String,String>> list = sid.getCllx(sql);
SelectItem[] select = new SelectItem[list.size()] ;
for(int i=0;i<list.size();i++) {
select[i] = new SelectItem((String)(list.get(i)).get("name"),(String)(list.get(i)).get("comments"));
}
return select;
}
// try {
// rsmt = (sid.getDataSource().getConnection()).getMetaData();
// ResultSet rs=rsmt.getTables(null, null, "DIM%", new String[]{"TABLE"});
// while (rs.next()) {
// System.out.println(rs.getString(3));
// }
//
//} catch (SQLException e) {
// e.printStackTrace();
//}
//
// public void test() {
// getConnectioned();
// try {
// ResultSet rs = null;
// Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.9.172:1521:yfzx","zhfxyp","zhfxyp");
// PreparedStatement pstmt = con.prepareStatement("select table_name from user_tables t where t.table_name like '%'||'DIM'||'%'");
// rs = pstmt.executeQuery();
// while (rs.next()) {
// System.out.println(rs.getString(1));
// }
// } catch (SQLException e) {
// e.printStackTrace();
// }
// try {
// Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.9.172:1521:yfzx","zhfxyp","zhfxyp");
// rsmt = con.getMetaData();
// ResultSet rs=rsmt.getColumns(null, null, "DIM_WF_DSR", null);
// while (rs.next()) {
// System.out.println(rs.getString(4));
// }
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
//
// public static void main(String[] args) {
// DataBaseAdmin db = new DataBaseAdmin();
// db.test();
// }
public void updatePage(ValueChangeEvent e){
System.out.println("======");
this.setTestingstring("234");
// String table = this.getParameter("database");
// ResultSet rs = null;
// System.out.println("~~~~~~~~~~~"+columnsName.length);
// try {
// rsmt = (sid.getDataSource().getConnection()).getMetaData();
// rs = rsmt.getColumns(null, null, table, null);
// } catch (SQLException e1) {
// e1.printStackTrace();
// }
// StringBuilder s = new StringBuilder();
// if(rs!=null) {
// try {
// rs.last();
// columnsName = new String[rs.getRow()];
// rs.beforeFirst();
// int count = 0;
// while(rs.next()) {
// s.append(rs.getString(4)+",");
// columnsName[count++] =rs.getString(4) ;
// }
// System.out.println("~~~~~~~~~~~"+columnsName.length);
// } catch(SQLException e2) {
// e2.printStackTrace();
// }
// String sql = "select "+s.substring(0, s.lastIndexOf(",")) +" from "+table;
// dataModel = sid.getCllx(sql);
// if(rs!=null) {
// rs = null;
// try {
// rs.close();
// } catch (SQLException e1) {
// e1.printStackTrace();
// }
// }
// }
}
//get table data
public List getDataModel() {
return dataModel;
}
public String getParameter(String param) {
if ((String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(param) !=null) {
return ((String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(param)).trim();
} else {
return null;
}
}
public String[] getColumnsName() {
return columnsName;
}
}
帮忙看看为什么我的Listener调用不了
后台没有打印“======”,按理说调用Listener的时候会调用
高手搞起啊。感谢了!
问题找到了。。。是ice:selectOneMenu的为问题,改成h:selectOneMenu就好了。。。悲催
分享到:
相关推荐
在JSF(JavaServer Faces)框架中,`<h:selectOneMenu>` 是一个用于创建下拉选择框的组件,而 `<a4j:support>` 是RichFaces库提供的一种Ajax支持的标签,它允许我们实现页面的部分更新,提高用户体验。这篇博客文章...
本篇将深入探讨如何使用`<h:selectOneMenu>`标签来实现这种功能,该标签是JavaServer Faces (JSF)框架的一部分。 ### JSF `<h:selectOneMenu>`标签介绍 `<h:selectOneMenu>`是JSF中用于创建单选下拉列表的组件。它...
在JSF(JavaServer Faces)框架中,`h:selectOneMenu` 是一个用于创建下拉选择框的组件。在某些场景下,我们可能需要将这个组件设置为只读或不可编辑状态,以便用户只能查看选项,而不能进行选择。本文将详细讲解...
5. **使用简单**:只需简单的配置,如 `<q:linkage for="country,province,city,area,street" listener="#{LinkageBean.listener}"/>`,即可创建联动效果。 在实际开发中,级联选择常见于如国家-省-市-区-街道这样...
在JSF中,`<h:selectOneMenu>`和`<h:selectManyMenu>`标签分别用于创建单选和多选下拉列表。这些标签允许开发者绑定数据模型到选项,以及处理用户的选中操作。例如: ```html <h:selectOneMenu value="#{bean....
<h:selectOneMenu id="selType" value="#{authfile.queryFileType}" disabled="#{authfile.showResult}" styleClass="ui-inputfield ui-widget ui-state-default ui-corner-all" accesskey="2" title="#{msg['...
valueChangeListener="#{cc.parent.attrs.location.zoomChanged}"> <f:selectItems value="#{places.zoomLevelItems}"/> </h:selectMenu> ``` #### 三、Ajax支持 JSF 2 内置了对Ajax的支持,这意味着开发者可以...
selectItem标签用于指定UISelectOne或UISelectMany组件的一个项目,用来为h:selectOneMenu等选择性组件设置选择数据项。示例代码: ``` <h:selectOneMenu value="#{bean.selectedItemValue}"> <f:selectItem .../>...
<h:selectOneMenu id="country" value="#{bean.country}"> <f:ajax event="valueChange" listener="#{bean.onCountryChange}" render="city" /> <f:selectItems value="#{bean.countries}" var="c" itemValue="#{c...
- 使用`h:selectOneMenu`来创建下拉列表,每个列表都有一个`valueChangeListener`属性,用于监听用户的选择变化。例如,省份列表的`onchange`事件触发`showcity2()`函数,城市列表的`onchange`事件触发`showcity3()...
例如:<h:selectOneMenu value="#{ConfInitFTPVBean.probeStrategy}"> <f:selectItems value="#{ConfInitFTPVBean.probeStrategyList}" var="strategy" itemLabel="#{strategy.name}" itemValue="#{strategy.value}...
- **`valueChangeListener`**: 监听值的变化。 - **`converter`**: 定义如何将用户输入转换为适当的对象类型。 - **`validator`**: 验证用户输入。 - **`required`**: 标识字段是否为必填项。 - **`immediate`**: ...
级联菜单的实现可能涉及到`<h:selectOneMenu>`或`<p:selectOneMenu>`标签,其中`p:`是PrimeFaces组件库的前缀,而`h:`则是JSF的标准组件库前缀。这些组件可以配置成响应用户的选中事件,通过Ajax请求获取下一级菜单...
- **valueChangeListener**:设置值改变事件处理者。 - **converter**:设置数据转换器。 - **validator**:设置验证器。 - **required**:检查输入框是否必须填写。 - **immediate**:控制事件是否立即触发。 此外...
4. **选择(Selections)**:如`<h:selectOneMenu>`,用于实现选项选择。 5. **其他**:包括`<h:form>`、`<h:message>`、`<h:messages>`和`<h:graphicImage>`等。 这些标签拥有共同的属性,例如: - `id`:用于唯一...
<h:selectOneMenu value="#{localeBean.locale}"> <f:selectItem itemValue="en" itemLabel="English" /> <f:selectItem itemValue="zh_CN" itemLabel="中文" /> <!-- 添加其他语言选项 --> <f:ajax execute="@...