AJAX Forms
deibys Jan 10, 2008 4:14 PMHola !
I am trying to make a web application completely based on AJAX requests, suported by Ricachfaces Framework
I am form for "creating an item" , in my database , I when I press submit button it is created , but it should navigate to another page , which it does not...and I dont know why..... It is configured correctly in my faces-config.xml file.
This is the index.jsp file, where my form is included, please see red coloured code
<%--
Document : template
Created on : 2/01/2008, 07:43:57 AM
Author : Deibys
--%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<style type="text/css">
body,
html {
margin:20;
padding:0;
}
body {
min-width:800px;
}
#wrap {
margin:0 auto;
width:1024px;
}
#main {
float:right;
width:750px;
}
#sidebar {
float:left;
width:250px;
}
#footer {
background:#cc9;
clear:both;
}
#footer p {
padding:5px;
margin:0;
}
</style>
</head>
<body>
<f:view>
<div id="header">
<rich:toolBar>
<rich:toolBarGroup>
<h:outputText value="Bienvenido #{UserBean.userName} !" />
</rich:toolBarGroup>
<rich:toolBarGroup location="right">
<h:form id="logoutForm" >
<h:commandLink id="logout" action="#{LoginManager.logout}" >
<h:outputText value="Salir" />
</h:commandLink>
</h:form>
</rich:toolBarGroup>
</rich:toolBar>
</div>
<rich:spacer width="1" height="10" />
<div id="main">
<a4j:outputPanel id="main2" >
<div><h2><h:outputText value="#{MenuBean.nodeSelectedTitle}" /></h2></div>
<a4j:include viewId="#{MenuBean.optionSelectedUrl}" />
</a4j:outputPanel>
</div>
<div id="sidebar">
<rich:panel>
<h:form>
<rich:tree switchType="client" value="#{MenuBean.treeNode}" var="item" id="navigationMenu"
iconLeaf="/images/gear.gif" iconCollapsed="/images/tree_folder_close.gif"
iconExpanded="/images/tree_folder_open.gif" icon="false"
preserveModel="state" ajaxSubmitSelection="true" reRender="main2"
nodeSelectListener="#{MenuBean.processSelection}" >
<rich:treeNode >
<h:outputText value="#{item.title}" />
</rich:treeNode>
</rich:tree>
</h:form>
</rich:panel>
</div>
<rich:spacer width="1" height="10" />
<div id="footer">
<p>@Copyright 2008</p>
</div>
</f:view>
</body>
</html>
My form is createArea.jsp
<%--
Document : createArea
Created on : 8/01/2008, 03:35:09 PM
Author : Deibys
--%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<h:form id="createAreaForm" >
<rich:messages />
<h:panelGrid columns="2" cellspacing="5" >
<h:outputLabel value="Area" for="area" />
<h:inputText id="area" required="true" value="#{AreaBean.areaName}" />
<h:outputLabel value="Estado" for="status" />
<h:selectOneMenu value="#{AreaBean.status}" id="status">
<f:selectItem itemLabel="Activo" itemValue="A" />
<f:selectItem itemLabel="Inactivo" itemValue="I" />
</h:selectOneMenu>
<a4j:commandButton value="Crear >>" action="#{AreaBean.create}" />
</h:panelGrid>
</h:form>
And the page it should navigate to, when clicked on " Crear >>" button is (editArea.jsp)
<%--
Document : editArea
Created on : 10/01/2008, 02:27:31 PM
Author : Deibys
--%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<h:form id="editAreaForm" >
<rich:messages />
<h:panelGrid columns="2" cellspacing="5" >
<h:inputHidden id="id" value="#{AreaBean.areaId}" />
<h:outputLabel value="Area" for="area" />
<h:inputText id="area" required="true" value="#{AreaBean.areaName}" disabled="true" />
<h:outputLabel value="Estado" for="status" />
<h:selectOneMenu value="#{AreaBean.status}" id="status">
<f:selectItem itemLabel="Activo" itemValue="A" />
<f:selectItem itemLabel="Inactivo" itemValue="I" />
</h:selectOneMenu>
<a4j:commandButton value="Editar >>" action="#{AreaBean.edit}" />
</h:panelGrid>
</h:form>
my AreaBean code is :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.coorserpark.backing;
import com.coorserpark.model.Area;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
/**
*
* @author Deibys
*/
public class CreateAreaBean {
private long areaId;
private String areaName;
private String status;
private boolean editMode;
public long getAreaId() {
return areaId;
}
public void setAreaId(long areaId) {
this.areaId = areaId;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String create() throws Exception {
try {
FacesContext fc = FacesContext.getCurrentInstance();
long areaId = Area.createArea(areaName, status);
if (areaId > 0) {
// add
fc.addMessage(null, new FacesMessage("Area Creada Exitosamente",null));
this.areaId = areaId;
return "success";
} else {
return "failure";
}
} catch (Exception e) {
throw new Exception(e);
}
//return null;
}
public String edit() {
try {
FacesContext fc = FacesContext.getCurrentInstance();
Area area = new Area();
area.setAreaId(areaId);
area.setAreaName(areaName);
area.setStatus(status);
if (area.editArea()) {
// add
fc.addMessage(null, new FacesMessage("Area Modificada Exitosamente",null));
return "success";
} else {
return "failure";
}
} catch (Exception e) {
// Throw CreateUser Exception or Custom Gambatte Exception
}
return null;
}
}
My faces-config.xml: is
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config>
<managed-bean>
<managed-bean-name>AreaBean</managed-bean-name>
<managed-bean-class>com.coorserpark.backing.CreateAreaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/Administracion/createArea.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/Administracion/editArea.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
What's wrong ? When I click submit , page does not navigate....Message is display, in the same page I click on submit