【发布时间】:2017-10-14 08:27:51
【问题描述】:
我在更新 AJAX 后尝试更新 dataTable 的内容(触发 DB 上的更新请求) 在我的程序中,用户单击 commandLink 或单击以更新数据库中的“odm.valide_manag1”字段(使用 Datatable 执行请求,不幸的是,此阶段通过测试该字段将图像(项目符号)从红色变为绿色未正确执行测试始终未检查(不更新字段的getter) 我在@PostConstruct中调用listodm对象的重新生成,在Getter中,在验证方法中,我更改了Scope但没有成功
@ManagedBean
@ViewScoped // or RequestScoped
public class listeOdm {
public static Logger log= LogManager.getLogger(listeOdm.class.getName());
private List<odm> listOdm= new ArrayList<odm>() ; // a changer vers ListDataModel
private odmService odmservice = new odmServiceImpl();
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession httpsession = (HttpSession) fc.getExternalContext().getSession(false);
private String n_odm;
private String operation;
private HtmlDataTable dataTable;
@PostConstruct
public void initMyBean()
{ listOdm=null;
log.info("1- debut PostConstruct : " );
listOdm = odmservice.findByMatricule("1000"); /*(String) httpsession.getAttribute("Matricule")*/
//listOdm = odmservice.findAll();
log.info("1- PostConstruct NOMBRE DES ODM : " + listOdm.size()+ " The Object Is "+ listOdm.hashCode());
RequestContext.getCurrentInstance().update("basicDT");
/* if("edit".equals(getParam("operation")))
{
editOdm();
}*/
}
public String getParam(String name)
{
Map<String, String> params=fc.getExternalContext().getRequestParameterMap();
return params.get(name);
}
public void onValid_manag(RowEditEvent event)
{
odmservice.validManager(((odm) event.getObject()).getNum_odm());
FacesMessage msg = new FacesMessage("Odm validée", ((odm) event.getObject()).getNum_odm());
FacesContext.getCurrentInstance().addMessage(null, msg);
// ((odm) event.getObject() ).setValide_manag1("2");
// listOdm.clear();
// listOdm = odmservice.findAll();
listOdm = odmservice.findByMatricule("1000");
log.info("2- on valid Method la nouvelle valeur de Valide_manage1 est :" + ((odm) event.getObject()).getValide_manag1());
log.info("2- on valid Method : " + listOdm.size()+ " The Object Is "+ listOdm.hashCode());
RequestContext.getCurrentInstance().update("basicDT");
}
public void onCancel_manag(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Odm Non validée", ((odm) event.getObject()).getNum_odm());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void editOdm()
{ // setN_odm(getParam("numOdm"));
// setOperation(getParam("operation"));
log.info("0- edit methode : "+getParam("numOdm"));
odmservice.validManager(getParam("numOdm"));
//listOdm = odmservice.findByMatricule("1000"); /*(String) httpsession.getAttribute("Matricule")*/
log.info("edit de l'ODM N°: ");
listOdm = odmservice.findByMatricule("1000");
}
public void modif()
{ log.info("on Expand Start ");
listOdm = odmservice.findByMatricule("1000");
}
public void printOdm()
{}
public List<odm> getListOdm() {
log.info("getter list odm"+this.listOdm.hashCode());
if (FacesContext.getCurrentInstance().getRenderResponse()) {
log.info("getter list odm"+this.listOdm.hashCode());
listOdm = odmservice.findByMatricule("1000");
}
return listOdm ;//= odmservice.findByMatricule("1000");
}
public void setListOdm(List<odm> listOdm) {
this.listOdm=listOdm ;
}
public String getN_odm() {
return n_odm;
}
public void setN_odm(String n_odm) {
this.n_odm = n_odm;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public HtmlDataTable getDataTable() {
dataTable.clearInitialState();
return dataTable;
}
public void setDataTable(HtmlDataTable dataTable) {
this.dataTable = dataTable;
}
}
Xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"></link>
<title>Insert title here</title>
</h:head>
<h:body>
<ui:debug />
<h:form id="formulaire1">
<h:inputHidden value="#{listeOdm.n_odm}" />
<h:inputHidden value="#{listeOdm.operation}" />
<p:growl id="msgs" showDetail="true"/>
<h:dataTable id="basicDT" var="odm" value="#{listeOdm.listOdm}" binding="#{listeOdm.dataTable}" >
<h:column headerText="Etat" id= "bulet">
<h:panelGroup rendered="#{odm.valide_manag1 eq '2'}">
<h:graphicImage library="img" name="if_bullet-green_44189.png" width="24" height="24" style="border-style: none"/>
</h:panelGroup>
<h:panelGroup rendered="#{odm.valide_manag1+odm.valide_manag2 eq '1'}">
<h:graphicImage library="img" name="orange.gif" width="24" height="24" style="border-style: none"/>
</h:panelGroup>
<h:panelGroup rendered="#{odm.valide_manag1+odm.valide_manag2 eq '0'}">
<h:graphicImage library="img" name="if_bullet-red_44191.png" width="24" height="24" style="border-style: none"/>
</h:panelGroup>
</h:column>
<h:column headerText="valid">
<h:outputText value="#{odm.valide_manag1}" />
</h:column>
<h:column headerText="Num Odm">
<h:outputText value="#{odm.num_odm}" />
</h:column>
<h:column headerText="Client">
<h:outputText value="#{odm.client}" />
</h:column>
<h:column headerText="Station">
<h:outputText value="#{odm.station}" />
</h:column>
<h:column headerText="Destination">
<h:outputText value="#{odm.destination}" />
</h:column>
<h:column headerText="date dep">
<h:outputText value="#{odm.date_dep}" pattern="dd/MM/yyyy"/>
</h:column>
<h:column headerText="date retour">
<h:outputText value="#{odm.date_ret}" pattern="dd/MM/yyyy"/>
</h:column>
<h:column headerText="Cient">
<h:outputText value="#{odm.client}" />
</h:column>
<h:column headerText="Edit" width="24">
<h:commandLink
actionListener="#{listeOdm.editOdm}" update=":formulair1:basicDT" ajax="true">
<f:param name="numOdm" value="#{odm.num_odm}"></f:param>
<f:param name="operation" value="edit"></f:param>
<h:graphicImage library="img" name="118805-128.png" width="24" height="24" style="border-style: none"/>
<!-- <i class="fa fa-envelope"></i> -->
</h:commandLink>
<h:commandLink
actionListener="#{listeOdm.printOdm}" update="formulaire1">
<f:param name="numOdm" value="#{odm.num_odm}"></f:param>
<f:param name="operation" value="edit2"></f:param>
<h:graphicImage library="img" name="Print-2-128.png" width="24" height="24" style="border-style: none"/>
<!-- <i class="fa fa-envelope"></i> -->
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
JSF2.2.9 Tomcat 8.5
【问题讨论】:
-
你能正确造句吗?这太难读了。
-
对不起,我说法语
-
我正在尝试在 AJAX 调用后更新 dataTable 的内容
-
我正在尝试通过在我的程序中单击 AJAX 按钮或链接(在 DB 上触发更新请求)来更新 h:dataTable 的内容,最终用户单击命令链接或命令按钮以更新数据库中的字段“odm.valide_manag1”(在 h:Datatable 中,图像(项目符号)通过测试该字段从红色变为绿色)不幸的是,此阶段未正确执行 EL 表达式 odm.valide_manag1+odm.valide_manag2 eq '0' 总是 eq 0 (不更新字段 odm.valide_manag1;odm.valide_manag2 的 getter)我调用 listodm 对象的重新生成
-
“对不起,我说法语”。废话。法语的大小写和标点规则与英语相同。英语和法语的句子都以大写字母开头,以句点结尾。这只是草率和不尊重的写作,而不是专业写作。即使你用法语写作,人们也会打电话给你。我们不关心语法。然而,我们确实关心可读性。可读性与语法关系不大。可读性与正确的格式有很大关系。作为程序员的你应该知道这一点。格式错误的代码也几乎不可读。
标签: ajax jsf primefaces