[英]InputText value from a listener in p:ajax passes null instead of value
我试图将inputText的值输入到ap:ajax中的侦听器调用的方法中,但它始终传递null并无法找出原因。 有任何想法吗? 我真的很感谢可以在这里提供的帮助。
这是我的代码:
<!-- Panel -->
<div class="panel panel-info">
<div class="panel-body">
<p:panel id="panel" widgetVar="panelwv" header="#{msg.shametastit}" toggleable="true" collapsed="true" style="white-space: normal;">
<div class="pull-right"><a HREF="http://www.openbizview.com/wiki/doku.php?id=reportes" target="_new" title="Wiki"><i class="fa fa-file-text text-info"></i></a></div>
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-4">
<p:inputText id="numtrabajadores" styleClass="spacing" maxlength="5" required="true" requiredMessage="#{bd.getMessage('htmlvalidate')}" value="#{shametas.numtrabajadores}" converter="javax.faces.BigDecimal" converterMessage="#{bd.getMessage('htmlvalidatenum')}"/>
<p:watermark for="numtrabajadores" value="#{msg.shametasnum}" />
<p:spacer height="1"/>
<p:message for="numtrabajadores"/>
<p:autoComplete id="sucursal" styleClass="spacing2" value="#{shametas.sucursal}" required="true" requiredMessage="#{bd.getMessage('htmlvalidate')}" emptyMessage="#{msg.html138}" completeMethod="#{autocomplete.completeCentop}" valueChangeListener="#{bd.setSucursal(shametas.sucursal)}" dropdown="true" scrollHeight="250">
<p:ajax event="itemSelect" update="tbResult" listener="#{bd.setSucursal(shametas.sucursal)}" />
<p:ajax event="itemSelect" update="headcount, promedio" listener="#{shametas.onselectSuc()}" />
</p:autoComplete>
<p:watermark for="sucursal" value="#{msg.shametassuc}" />
<p:spacer height="1"/>
<p:message for="sucursal"/>
</div>
</div>
<h:inputHidden id="vop" value="#{shametas.validarOperacion}"/>
</p:panel>
</div>
</div>
这是我的Bean代码:
public void onselectSuc(String pnum) {
if(sucursal==null){
sucursal = " - ";
}
String[] vecsuc = sucursal.split("\\ - ", -1);
//Consulta que hace la seleccion automatica para los inputtext de los empelados, valores nombre completo, genero, cargo!!!
System.out.println("numtrabajadores: " + numtrabajadores);
//System.out.println("anio: " + anio);
//System.out.println("mes: " + mes);
String query = " SELECT COUNT(A.FICTRA) AS HEADCOUNT, TRUNC(" + numtrabajadores + "/COUNT(A.FICTRA),2) AS PROMEDIO";
query += " FROM NM_TRABAJADOR@INFOCENT_CALENDARIO A";
query += " WHERE A.CODSUC like '" + vecsuc[0].toUpperCase() + "%'";
query += " AND A.FECRET IS NULL ";
query += " ORDER BY 1";
PntGenerica select = new PntGenerica();
try {
select.selectPntGenerica(query,JNDIDESA);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int rows = select.getRows();
String vltabla[][] = select.getArray();
if(rows>0){
zuno = vltabla[0][0];
zdos = vltabla[0][1];
//ztres = vltabla[0][2];
}
System.out.println(query);
//System.out.println("zuno:" + zuno);
//System.out.println("zuno:" + zdos);
//System.out.println("zuno:" + ztres);
}
当我发布此内容时,我花了很多时间在互联网上进行研究,并使用HttpServletRequest找到了解决我的问题的方法,这里是更新的bean:
public void onselectSuc() {
if(sucursal==null){
sucursal = " - ";
}
String[] vecsuc = sucursal.split("\\ - ", -1);
HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String ntrabajador = rq.getParameter("formshametas:numtrabajadores");
//Consulta que hace la seleccion automatica para los inputtext de los empelados, valores nombre completo, genero, cargo!!!
System.out.println("numtrabajadores: " + ntrabajador);
//System.out.println("anio: " + anio);
//System.out.println("mes: " + mes);
String query = " SELECT COUNT(A.FICTRA) AS HEADCOUNT, CASE WHEN COUNT(A.FICTRA) = 0 THEN 0 WHEN COUNT(A.FICTRA) IS NULL THEN 0 ELSE TRUNC(" + ntrabajador + "/COUNT(A.FICTRA),2) END AS PROMEDIO";
query += " FROM NM_TRABAJADOR@INFOCENT_CALENDARIO A";
query += " WHERE A.CODSUC like '" + vecsuc[0].toUpperCase() + "%'";
query += " AND A.FECRET IS NULL ";
query += " ORDER BY 1";
PntGenerica select = new PntGenerica();
try {
select.selectPntGenerica(query,JNDIDESA);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int rows = select.getRows();
String vltabla[][] = select.getArray();
if(rows>0){
zuno = vltabla[0][0];
zdos = vltabla[0][1];
//ztres = vltabla[0][2];
}
System.out.println(query);
//System.out.println("zuno:" + zuno);
//System.out.println("zuno:" + zdos);
//System.out.println("zuno:" + ztres);
}
奇迹般有效。
有时您需要大声思考才能得到答案...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.