Sou iniciante em JavaServer Faces e estou tentando capturar o conteúdo de um textField chamado “usuario” de uma página (Page1.jsp) dentro de um método contido no javabean (Page1.java), alguém sabe como fazer isso?
Tentei acessar como se fosse um componente usando usuario.getText(), mas não funcionou.
public class UsuarioBean{
private String nomeUsuario;
//gets e sets
}
na sua página.
<h:inputText label="Nome Usuário" id="usuario" size="80"
value="#{usuarioBean.nomeUsuario}" />
Acho que não eu não soube me expressar Fujioka. Eu estou usando NetBeans 6.1, criei um aplicativo web usando o framework Visual Java Server Faces. Na página que foi criada automaticamente (Page1.jsp), inseri um componente botão e um TextField que renomeei o id para nameField. Dei um duplo clique no botão e ele abriu o evento associado a ele na PageBean da página, neste caso chamada Page1.java, porém no editor java não é reconhecido o TextField que acrescentei na página. Este exemplo eu tirei de um tutorial que o autor afirmava funcionar. Procurei no site de tutoriais do Netbeans http://testwww.netbeans.org/kb/55/vwp-helloweb_pt_BR.html e encontrei este também um exemplo que fazia algo parecido e que também não funcionou. Poderá ser algo relacionado à versão. Veja o código do evento click do botão no PageBean.
Código da página JSP (Page1.jsp)
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : Page1
Created on : 23/10/2008, 13:33:17
Author : Luiz Carlos
-->
<jsp:root version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<webuijsf:page id="page1">
<webuijsf:html id="html1">
<webuijsf:head id="head1" title="Olá Web">
<webuijsf:link id="link1" url="/resources/stylesheet.css"/>
</webuijsf:head>
<webuijsf:body id="body1" style="-rave-layout: grid">
<webuijsf:form id="form1">
<webuijsf:label for="nameField" id="label1" style="position: absolute; left: 48px; top: 48px" text="Nome:"/>
<webuijsf:textField id="nameField" style="position: absolute; left: 96px; top: 48px" text="Inserir seu nome"/>
<webuijsf:button actionExpression="#{Page1.helloButton_action}" id="helloButton"
style="height: 24px; left: 47px; top: 216px; position: absolute; width: 71px" text="Diga Olá"/>
<webuijsf:staticText id="helloText" style="position: absolute; left: 48px; top: 96px"/>
<webuijsf:messageGroup id="messageGroup1" style="left: 48px; top: 144px; position: absolute; width: 502px"/>
</webuijsf:form>
</webuijsf:body>
</webuijsf:html>
</webuijsf:page>
</f:view>
</jsp:root>
Código da PageBean (Page1.java)
/*
* Page1.java
*
* Created on 23/10/2008, 13:33:17
*/
package testeweb;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import javax.faces.FacesException;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*
* @author Luiz Carlos
*/
public class Page1 extends AbstractPageBean {
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception {
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public Page1() {
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
@Override
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try {
_init();
} catch (Exception e) {
log("Page1 Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
}
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess() {
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
@Override
public void prerender() {
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
@Override
public void destroy() {
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1) getBean("RequestBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1) getBean("ApplicationBean1");
}
public String helloButton_action() {
// TODO: Processe a ação. O valor de retorno é um nome de caso
// de navegação em que nulo retornará à mesma página.
String name = (String) nameField.getText(); //aqui ele da erro, ele não reconhece o campo nameField
helloText.setText("Olá, " + name + "!"); //este é um campo StaticText, também não reconhecido
return null;
}
}