2010-07-26 23 views
5

tengo este código de trabajo en mi aplicación web:Haciendo t: trabajo commandButton como h: Botón

<h:button value="Edit user..." outcome="/public/user" > 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</h:button> 

Lo que hace:

  1. Esto hace que el botón de enviar un GET
  2. Pasa el parámetro especificado en la URL, por lo que es bookmarkable.

lo que necesito:

  • que debería funcionar como h: botón de arriba (enviar GET)
  • el botón debe ser similar a otros botones PrimeFaces (por ejemplo, decorado con una imagen ... etc.)

Esto es lo más cerca que pude conseguir:

<p:commandButton value="Edit user..." action="/public/user?faces-redirect=true" ajax="false" immediate="true" > 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</p:commandButton> 

Se envía un mensaje que se le redirecciona automáticamente a la nueva dirección URL con un GET. Sin embargo, el parámetro se pierde en el proceso.

Otra idea:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml"> 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</p:linkButton> 

La petición GET se interrumpe (??? acuerdo con Firebug) y la página actual se encuentra de nuevo.

¿Cuál es la forma correcta de hacerlo?

ACTUALIZACIÓN: esto funciona (en una página en blanco, sin t: dataTable):

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername"> 

pero esto no es así:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue"> 

los últimos resultados en:

500: javax.servlet.ServletException: Error al analizar /sample0.xhtml: error Trazado [línea: 14] El refere nce a entidad "secondParam" debe terminar con ';' delimitador.


Update2: la & debe escaparon:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&amp;secondParam=otherValue"> 

y se ve bien ... pero sigo teniendo el GET y POST abortado resienten:

alt text http://img64.imageshack.us/img64/1017/primefaceslinkbutton.jpg

Esta es la página completa en blanco que he estado intentando con:

<?xml version='1.0' encoding='UTF-8' ?> 
<!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:c="http://java.sun.com/jsp/jstl/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.prime.com.tr/ui"> 
    <h:head /> 
    <h:body> 
     <h:form> 
      <p:linkButton value="Click me" href="http://stackoverflow.com" /> 
     </h:form> 
    </h:body> 
</html> 

Primefaces 2.1 lanzamiento.

Respuesta

1

Use p:linkButton.


actualización: según su actualización con el ejemplo de código, la URL debe ser especificado en href atributo, no en el url attribtue. También vea la documentación del componente que he vinculado aquí arriba.

Los síntomas al menos parecen como si estuviera ejecutando una solicitud GET asíncrona (Ajax), no una síncrona. FireBug de hecho daría este tipo de error cuando la solicitud se active en un dominio diferente.

¿No tiene otros Javascripts que son molestos/colisionan con el comportamiento predeterminado de linkButton? El botón está navegando por un simple onclick="window.location=newurl;".


Actualización 2: funciona si lo pruebas independiente en una simple página? P.ej.

<!DOCTYPE html> 
<html xmlns="http://www.w3c.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.prime.com.tr/ui"> 
    <h:head> 
     <title>Test</title> 
    </h:head> 
    <h:body> 
     <p:linkButton value="test" href="http://stackoverflow.com" /> 
    </h:body> 
</html> 
+0

Yo probé t: linkButton, pero no funciona. Firebug dice que la solicitud GET se cancela, y la página actual se POST. – egbokul

+0

Lo siento, no hice una copia/pegado completo. Estoy usando el atributo "href", "url" ni siquiera es aceptado por Netbeans. Ahora comprobaré si hay otros javascript ... – egbokul

+0

En una página vacía p: linkButton funciona ... más o menos. f: param no funciona. Si especifico el parámetro en la URL directamente (por ejemplo: ".../user.xhtml? UserName = myusername") funciona. Cuando especifico un parámetro más, Glassfish dice 500: javax.servlet.ServletException: Error Parsing /sample0.xhtml: Error Traced [line: 14] La referencia a la entidad "relVerMin" debe terminar con ';' delimitador. (relVerMin fue mi segundo parámetro, como: ".../delrel.xhtml? relVerMaj = 1 & relVerMin = 0") – egbokul

3

En PrimeFaces 2.2., Vamos a despreciar linkButton e introducir p: botón. Emitir boleto;

http://code.google.com/p/primefaces/issues/detail?id=1037

+0

Ah, lindo. ¿Puedes explicar el problema particular en detalle de todos modos? – BalusC

+0

OK, así que me quedaré con h: botón sin imágenes por el momento. Gracias BalusC por su tiempo y esfuerzo, y por supuesto Cagatay por la respuesta ;-) – egbokul

+0

Aquí hay una nueva p: botón; http://www.primefaces.org:8080/prime-showcase-labs/ui/button.jsf –

Cuestiones relacionadas