Java jsf2-f:ajax标记不';行不通
我对f:ajax标记有一个问题。在我以前的项目中,一切都很顺利。现在我有了另一个项目,f:ajax标签根本不起作用,我也不知道为什么 我在JSF页面中使用了Facelets:Java jsf2-f:ajax标记不';行不通,java,ajax,facelets,jsf-2,Java,Ajax,Facelets,Jsf 2,我对f:ajax标记有一个问题。在我以前的项目中,一切都很顺利。现在我有了另一个项目,f:ajax标签根本不起作用,我也不知道为什么 我在JSF页面中使用了Facelets: <h:form> ... <h:selectOneMenu id="employeeId" value="#{employeeBean.employeeId}"> <f:selectItems value="#{employeeBean.employeesSelectI
<h:form>
...
<h:selectOneMenu id="employeeId" value="#{employeeBean.employeeId}">
<f:selectItems value="#{employeeBean.employeesSelectItem}"/>
<f:ajax event="change" listener="#{employeeBean.changeOwner}"/>
</h:selectOneMenu>
...
</h:form>
我看不出有什么不对劲。谢谢你的帮助
更新
面配置:
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<converter>
<converter-for-class>java.util.Date</converter-for-class>
<converter-class>misc.TimeZoneConverter</converter-class>
</converter>
</faces-config>
日期类型
其他时区转换器
xhtml页面:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./../templates/mainTemplate.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="content">
<h2>Smazání zaměstnance</h2>
Protože s daným zaměstnancem (#{employeeBean.employee.name} #{employeeBean.employee.surname}) souvisejí některé úkoly, je potřeba, aby se jich ujal jiný. Vyberte prosím nové zaměstnance u všech níže uvedených úkolů.
<h:form>
<h:dataTable value="#{taskBean.employeeTasks}" var="item">
<h:column>
<f:facet name="header">ID</f:facet>
<center>#{item.idtask}</center>
</h:column>
<h:column>
<f:facet name="header">Zadavatel</f:facet>
<h:selectOneMenu id="managerId" value="#{employeeBean.newManagerId}" rendered="#{employeeBean.employeeId == item.employeeByIdmanager.idemployee}">
<f:selectItems value="#{employeeBean.otherEmployeesSelectItem}"/>
<f:ajax event="change" listener="#{employeeBean.changeOwner}"/>
</h:selectOneMenu>
<h:outputText value="#{item.employeeByIdmanager.name} #{item.employeeByIdmanager.surname}" rendered="#{employeeBean.employeeId != item.employeeByIdmanager.idemployee}"/>
</h:column>
<h:column>
<f:facet name="header">Zodpovědná osoba</f:facet>
<h:selectOneMenu id="employeeId" value="#{employeeBean.newEmployeeId}" rendered="#{employeeBean.employeeId == item.employeeByIdemployee.idemployee}">
<f:selectItems value="#{employeeBean.otherEmployeesSelectItem}"/>
<f:ajax event="change" listener="#{employeeBean.changeOwner}"/>
</h:selectOneMenu>
<h:outputText value="#{item.employeeByIdemployee.name} #{item.employeeByIdemployee.surname}" rendered="#{employeeBean.employeeId != item.employeeByIdemployee.idemployee}"/>
</h:column>
<h:column>
<f:facet name="header">Čas zadání</f:facet>
<center><h:outputText value="#{item.timestart}"/></center>
</h:column>
<h:column>
<f:facet name="header">Udělat do</f:facet>
<center><h:outputText value="#{item.timetodo}"/></center>
</h:column>
<h:column>
<f:facet name="header">Popis úkolu</f:facet>
#{item.text}
</h:column>
<h:column>
<f:facet name="header">Zákazník</f:facet>
<h:link outcome="viewCustomerDetails">
<h:panelGrid columns="1">
<h:outputText value="#{item.customer.name}"/>
<h:outputText value="#{item.customer.addresscity}"/>
</h:panelGrid>
<f:param name="customerId" value="#{item.customer.idcustomer}"/>
</h:link>
</h:column>
<h:column>
<f:facet name="header">Stav úkolu</f:facet>
#{item.taskstate.state}
</h:column>
<h:column>
<f:facet name="header">Poznámky</f:facet>
<h:outputText escape="false" value="#{item.note}"/>
</h:column>
</h:dataTable>
</h:form>
<h:messages globalOnly="true" styleClass="messages"/>
</ui:define>
斯马扎尼·扎姆斯泰斯
Protože s daným zaměstnancem(#{employeeBean.employee.name}{employeeBean.employee.姓氏})souvisejíněkterěkoly,je potřeba,aby se jich ujal jiný。Vyberte prosím novézaměstnance u všech níže uvedenýchúkolů。
身份证件
#{item.idtask}
扎达瓦特
佐德波夫·德纳奥索巴
Čas zadání
乌德拉多
波皮斯库鲁
#{item.text}
扎卡兹尼克
斯塔夫库鲁
#{item.taskstate.state}
波兹纳姆基
更新2
雇员Bean:
package beans;
import beans.jsf.JSF;
import ejb.Get;
import ejb.Update;
import entities.Employee;
import entities.Permission;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
import javax.validation.constraints.Pattern;
import misc.Messages;
@ManagedBean(name="employeeBean")
@RequestScoped
public class EmployeeBean {
@EJB
private Get get;
@EJB
private Update update;
@ManagedProperty(name="employeeId", value="#{param['employeeId']}")
private int employeeId;
private int newManagerId;
private int newEmployeeId;
private String edit = "none";
@Pattern(regexp=".+", message="Jméno musí být vyplněno.")
private String name;
@Pattern(regexp=".+", message="Příjmení musí být vyplněno.")
private String surname;
private int permissionId;
private Employee employee;
/** Creates a new instance of EmployeeBean */
public EmployeeBean() {
}
public int getNewEmployeeId() {
return newEmployeeId;
}
public void setNewEmployeeId(int newEmployeeId) {
this.newEmployeeId = newEmployeeId;
}
public int getNewManagerId() {
return newManagerId;
}
public void setNewManagerId(int newManagerId) {
this.newManagerId = newManagerId;
}
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
employee = get.getEmployee(employeeId);
}
public String getEdit() {
return edit;
}
public void setEdit(String edit) {
this.edit = edit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPermissionId() {
return permissionId;
}
public void setPermissionId(int permissionId) {
this.permissionId = permissionId;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
private void showEdit() {
edit = "block";
}
private void hideEdit() {
edit = "none";
}
/**
* Naplní SelectItem všemi zaměstnanci.
* @return seznam zaměstnanců
*/
public List<SelectItem> getEmployeesSelectItem() {
List<SelectItem> employees = new ArrayList<SelectItem>();
for (Employee e : get.getEmployees()) {
employees.add(new SelectItem(e.getIdemployee(), e.getName() + " " + e.getSurname()));
}
return employees;
}
/**
* Vrátí seznam zákazníků.
* @return seznam zákazníků
*/
public List<Employee> getEmployees() {
return get.getEmployees();
}
/**
* Načte úkol pro editaci.
*/
public void loadEmployee() {
Employee e = get.getEmployee(employeeId);
if (e != null) {
name = e.getName();
surname = e.getSurname();
permissionId = e.getPermission().getIdpermission();
showEdit();
} else {
JSF.setMessage(Messages.DB_RETURN_NULL);
}
}
/**
* Naplní SelectItem všemi oprávněními.
* @return seznam oprávnění
*/
public List<SelectItem> getPermissionsSelectItem() {
List<SelectItem> permissions = new ArrayList<SelectItem>();
for (Permission p : get.getPermissions()) {
permissions.add(new SelectItem(p.getIdpermission(), p.getPermissionname()));
}
return permissions;
}
/**
* Zapíše úpravy úkolu.
*/
public void updateEmployee() {
try {
update.updateEmployee(name, surname, employeeId, permissionId);
JSF.setMessage(Messages.EMPLOYEE_UPDATE_OK);
} catch (Exception ex) {
showEdit();
JSF.setMessage(ex.getMessage());
}
}
/**
* Zruší prováděné úpravy a skryje editaci.
*/
public void cancel() {
hideEdit();
}
public void changeOwner(int taskId) {
System.out.println("taskId: "+taskId);
System.out.println("managerId: "+newManagerId);
System.out.println("employeeId: "+newEmployeeId);
// try {
// update.updateOwner(taskId, newManagerId, newEmployeeId);
// JSF.setMessage(Messages.UPDATE_OK);
// } catch (UpdateDBException ex) {
// JSF.setMessage(ex.getMessage());
// }
}
/**
* Naplní SelectItem všemi možnými stavy pro úkol.
* @return seznam stavů úkolu
*/
public List<SelectItem> getOtherEmployeesSelectItem() {
List<SelectItem> employees = new ArrayList<SelectItem>();
for (Employee e : get.getOtherEmployees(employeeId)) {
employees.add(new SelectItem(e.getIdemployee(), e.getName() + " " + e.getSurname()));
}
return employees;
}
}
packagebean;
导入beans.jsf.jsf;
导入ejb.Get;
导入ejb.Update;
进口实体。员工;
进口实体。许可;
导入java.util.ArrayList;
导入java.util.List;
导入javax.ejb.ejb;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ManagedProperty;
导入javax.faces.bean.RequestScope;
导入javax.faces.model.SelectItem;
导入javax.validation.constraints.Pattern;
导入杂项消息;
@ManagedBean(name=“employeeBean”)
@请求范围
公共类EmployeeBean{
@EJB
私人获得;
@EJB
私人更新;
@ManagedProperty(name=“employeeId”,value=“#{param['employeeId']}”)
私人国际雇员ID;
纽马格里德私人酒店;
私人int新员工ID;
私有字符串edit=“无”;
@模式(regexp=“.+”,message=“Jméno musíbýt vyplněno.”)
私有字符串名称;
@模式(regexp=“.+”,message=“Příjmenímusíbýt vyplněno.”)
私家姓;
私人int许可证;
私人雇员;
/**创建EmployeeBean的新实例*/
公共雇员Bean(){
}
public int getNewEmployeeId(){
返回新员工ID;
}
public void setNewEmployeeId(int newEmployeeId){
this.newEmployeeId=newEmployeeId;
}
public int getNewManagerId(){
返回newManagerId;
}
public void setNewManagerId(int newManagerId){
this.newManagerId=newManagerId;
}
public int getEmployeeId(){
返回员工ID;
}
public void setEmployeeId(int employeeId){
this.employeeId=employeeId;
employee=get.getEmployee(employeeId);
}
公共字符串getEdit(){
返回编辑;
}
公共void setEdit(字符串编辑){
this.edit=编辑;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getPermissionId(){
返回许可证ID;
}
public void setPermissionId(int permissionId){
this.permissionId=permissionId;
}
公共字符串getNames(){
返回姓氏;
}
public void setSurname(字符串姓氏){
this.姓氏=姓氏;
}
公共雇员getEmployee(){
返回员工;
}
公共作废集合雇员(雇员雇员){
this.employee=employee;
}
私有void showEdit(){
编辑=“块”;
}
私有void hidedit(){
编辑=“无”;
}
/**
*NaplníSelectItem všemi zaměstnanci。
*@return seznam zaměstnanců
*/
公共列表getEmployeesSelectItem(){
List employees=new ArrayList();
for(Employee e:get.getEmployees()){
添加(新的SelectItem(e.GetIdeEmployee(),e.getName()+“”+e.GetNames());
}
返回员工;
}
/**
*弗拉蒂塞兹南·扎卡兹尼·科什。
*@return seznam zákazníků
*/
公开名单{
返回get.getEmployees();
}
/**
*Načteúkol pro editaci。
*/
公众雇员(){
Employee e=get.getEmployee(employeeId);
如果(e!=null){
name=e.getName();
姓氏=e.getname();
permissionId=e.getPermission().getIdpermission();
showEdit();
}否则{
setMessage(Messages.DB_RETURN_NULL);
}
}
/**
*NaplníSelectItem všemi oprávněními。
*@return seznam oprávnění
*/
公共列表getPermissionsSelectItem(){
列表权限=新建ArrayList();
对于(权限p:get.getPermissions()){
添加(新建SelectItem(p.getIdpermission(),p.getPermissionname());
}
返回权限;
}
/**
*扎皮舍奥·普拉维·科鲁。
*/
public void updateEmployee(){
试一试{
update.updateEmployee(姓名、姓氏、员工ID、许可证ID);
setMessage(Messages.EMPLOYEE\u UPDATE\u OK);
}捕获(例外情况除外){
showEdit();
setMessage(例如getMessage());
}
}
/**
*Zrušprováděnúpravy是一个skryje editaci。
*/
公开作废取消(){
隐藏它();
}
公共空间
package beans;
import beans.jsf.JSF;
import ejb.Get;
import ejb.Update;
import entities.Employee;
import entities.Permission;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
import javax.validation.constraints.Pattern;
import misc.Messages;
@ManagedBean(name="employeeBean")
@RequestScoped
public class EmployeeBean {
@EJB
private Get get;
@EJB
private Update update;
@ManagedProperty(name="employeeId", value="#{param['employeeId']}")
private int employeeId;
private int newManagerId;
private int newEmployeeId;
private String edit = "none";
@Pattern(regexp=".+", message="Jméno musí být vyplněno.")
private String name;
@Pattern(regexp=".+", message="Příjmení musí být vyplněno.")
private String surname;
private int permissionId;
private Employee employee;
/** Creates a new instance of EmployeeBean */
public EmployeeBean() {
}
public int getNewEmployeeId() {
return newEmployeeId;
}
public void setNewEmployeeId(int newEmployeeId) {
this.newEmployeeId = newEmployeeId;
}
public int getNewManagerId() {
return newManagerId;
}
public void setNewManagerId(int newManagerId) {
this.newManagerId = newManagerId;
}
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
employee = get.getEmployee(employeeId);
}
public String getEdit() {
return edit;
}
public void setEdit(String edit) {
this.edit = edit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPermissionId() {
return permissionId;
}
public void setPermissionId(int permissionId) {
this.permissionId = permissionId;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
private void showEdit() {
edit = "block";
}
private void hideEdit() {
edit = "none";
}
/**
* Naplní SelectItem všemi zaměstnanci.
* @return seznam zaměstnanců
*/
public List<SelectItem> getEmployeesSelectItem() {
List<SelectItem> employees = new ArrayList<SelectItem>();
for (Employee e : get.getEmployees()) {
employees.add(new SelectItem(e.getIdemployee(), e.getName() + " " + e.getSurname()));
}
return employees;
}
/**
* Vrátí seznam zákazníků.
* @return seznam zákazníků
*/
public List<Employee> getEmployees() {
return get.getEmployees();
}
/**
* Načte úkol pro editaci.
*/
public void loadEmployee() {
Employee e = get.getEmployee(employeeId);
if (e != null) {
name = e.getName();
surname = e.getSurname();
permissionId = e.getPermission().getIdpermission();
showEdit();
} else {
JSF.setMessage(Messages.DB_RETURN_NULL);
}
}
/**
* Naplní SelectItem všemi oprávněními.
* @return seznam oprávnění
*/
public List<SelectItem> getPermissionsSelectItem() {
List<SelectItem> permissions = new ArrayList<SelectItem>();
for (Permission p : get.getPermissions()) {
permissions.add(new SelectItem(p.getIdpermission(), p.getPermissionname()));
}
return permissions;
}
/**
* Zapíše úpravy úkolu.
*/
public void updateEmployee() {
try {
update.updateEmployee(name, surname, employeeId, permissionId);
JSF.setMessage(Messages.EMPLOYEE_UPDATE_OK);
} catch (Exception ex) {
showEdit();
JSF.setMessage(ex.getMessage());
}
}
/**
* Zruší prováděné úpravy a skryje editaci.
*/
public void cancel() {
hideEdit();
}
public void changeOwner(int taskId) {
System.out.println("taskId: "+taskId);
System.out.println("managerId: "+newManagerId);
System.out.println("employeeId: "+newEmployeeId);
// try {
// update.updateOwner(taskId, newManagerId, newEmployeeId);
// JSF.setMessage(Messages.UPDATE_OK);
// } catch (UpdateDBException ex) {
// JSF.setMessage(ex.getMessage());
// }
}
/**
* Naplní SelectItem všemi možnými stavy pro úkol.
* @return seznam stavů úkolu
*/
public List<SelectItem> getOtherEmployeesSelectItem() {
List<SelectItem> employees = new ArrayList<SelectItem>();
for (Employee e : get.getOtherEmployees(employeeId)) {
employees.add(new SelectItem(e.getIdemployee(), e.getName() + " " + e.getSurname()));
}
return employees;
}
}
public void changeOwner(AjaxBehaviorEvent event) {
try {
update.updateOwner(...params...);
JSF.setMessage(Messages.UPDATE_OK);
} catch (UpdateDBException ex) {
JSF.setMessage(ex.getMessage());
}
}
<h:inputHidden value="#{employeeBean.employeeId}" />