Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Tu idioma  
PlanetNetbeans
Planet NetBeans es un rama de NetBeans relacionado con toda la Blogosphere.
Feeds
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
¿Tienes un blog acerca de NetBeans? Agrega tu blog a PlanetNetBeans.
Feed Subscripciones

Powered by:    Planet

Última actualización:
August 29, 2014 08:01 AM
All times are UTC

Sponsored by
sponsored by Oracle

visit NetBeans website
AVBravo - August 27, 2014 04:28 PM
Recorriendo elementos con Lambda

Un ejemplo de recorrer elementos de un list y agregarlos a varios JComboBox
for(String texto:camposList){
                jComboBoxUsername.addItem(texto);
                 jComboBoxActivate.addItem(texto);
                 jComboBoxPassword.addItem(texto);
                     jComboBoxName.addItem(texto);
            }


Podemos utilizar Lambda para realizar la misma operación
  camposList.stream().map((texto) -> {
                jComboBoxUsername.addItem(texto);
                return texto;
            }).map((texto) -> {
                jComboBoxActivate.addItem(texto);
                return texto;
            }).map((texto) -> {
                jComboBoxPassword.addItem(texto);
                return texto;
            }).forEach((texto) -> {
                jComboBoxName.addItem(texto);
            });

AVBravo - August 20, 2014 01:29 AM
Jugando con Lambda JDK8

Jugando con Lambda JDK8
recorrer los elementos mediante forEach podemos crear una función o hacerlo directamente.
listEntity.forEach(p -> imprimir(p));

   private String imprimir(String f) {
       System.out.println(f);
       
    }

Ordenar
Collections.sort(Entity, (a, b) -> a.compareTo(b));

AVBravo - July 09, 2014 03:09 AM
Error al ejecutar Glassfish

Si tenemos error al ejecutar Glassfish


./asadmin start-domain domain1



There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
Command start-domain failed.


Para solucionarlo tenemos que indicar el hostname en el archivo /etc/hosts
Pasos:
1. Encontrar el nombre de hostname ejecutar el comando
  hostname
nos muestra el nombre


2. Editar el archivo hosts con el comando
sudo vim /etc/hosts
y agregar luego 127.0.0.1 el nombre del hostname myhost name

3. Ejecutar
./asadmin start-domain domain1


s.png

AVBravo - July 06, 2014 06:51 PM
Recuperar una revisión desde Bitbucket

Recuperar una revisión desde Bitbucket

Cuando deseamos recuperar una revisión de mercurial en bitbucket,

s.png


si deseamos recuperar la revisión 12a165b

Entramos al directorio

s.png

ejecutamos
hg update -r 12a165bls

con este comando actualizamos nuestro proyecto a esa revisión.

AVBravo - June 26, 2014 03:08 PM
Plugin UML desde codigo fuente

Plugin UML

Sitio Oficial

Requisitos:
1. NetBeans IDE
2. Subversion
    Para instalarlo en Ubuntu
    sudo apt-get install subversion subversion-tools

Pasos:
1. Desde NetBeans IDE-->Team-->Subversion-->Checkout
https://svn.java.net/svn/nb-uml-plugin~nb-umlplugin

uml1.png

2. Seleccionar el directorio

uml2.png

3. Abrir el proyecto
uml03.png

4. Seleccionar el proyecto
uml04.png

5. Clic derecho y seleccionar Package as -->NBM
packages.png


6. En el menú Tools-->Plugins-->pestaña Downloaded, presionar el botón Add Plugins...
add.png


7. Se generaran los modulos nbm en el directorio
NetBeansProjects->plugins->uml->trunk->nb-uml->UML->build->updates
Captura de pantalla de 2014-06-26 09:41:27.png

8. Seleccionamos los archivos
p.png

9.presionar el botón Install
install.png

10. Se muestran los módulos  a instalar
modulos.png
respondemos a los mensajes en los siguientes cuadros de diálogo.

11.Tenemos el plugin instalado listo para ser usado

plugin.png

AVBravo - June 24, 2014 02:08 PM
NetBeans IDE 8.0 Satisfaction Survey

Si utilizas NetBeans IDE, puedes dar tu opinión sobre el mismo y dejar tus comentarios sobre aspectos que te gustarían que fuesen mejorados.


Enlace a la encuesta

NetBeans IDE 8.0 Satisfaction Survey

AVBravo - June 22, 2014 07:33 PM
Como usar imagenes con < p :commandButton >

Como usar imágenes con <p:commandButton>


Agregamos la imagen de 16x16 en resources
c.png


Editar el archivo default.css
r.png


Agregar al archivo
.dolar-icon {
   background-image: url("#{facesContext.externalContext.request.contextPath}/resources/imagenes/dolar.png") !important;
}


d.png


Ahora podemos usar el icon =”dolar-icon” que definimos en el archivo default.css
 <p:commandButton
                       icon="dolar-icon"
                       title="#{app['title.searchregimen']}"
                       rendered="#{cc.attrs.nivel6BotonRender}"
                       oncomplete="PF('nivel6ComponentDialogVar').show();"/>

bo.png

AVBravo - June 22, 2014 04:47 PM
NetBeans Dream Team: Our Favorite NetBeans IDE Features!

Agradeciendo a Geertjan Wielenga y a Zoran Sevarac, por la oportunidad de participar en la entrevista

NetBeans Dream Team: Our Favorite NetBeans IDE Features!




AVBravo - June 17, 2014 04:28 PM
Configurar tu Servidor Mercurial Local

Configurar tu Servidor Mercurial Local
Fuente


Pasos:
1.  Crear un proyecto maven nuevo en NetBeans
 1.1 Crear la clase Main del proyecto


2. Con el proyecto seleccionado, Team->Mercurial->Initialize Repository...
Captura de pantalla de 2014-06-17 10:31:43.png


3.Dar ok en el dialogo
i.png


4. Clic derecho en el proyecto Mercurial->Add
5. Clic derecho en el proyecto Mercurial->Commit
v.png


7. Cerrar el proyecto
8. Desde el terminal entrar a la carpeta del proyecto
/home/avbravo/NetBeansProjects/tutorial/integrador


9. Ejecutar el servidor mercurial
 hg serve


10. Indica que esta escuchando en el puerto 8000
hg.png


11. Podemos consultarlo desde el browser
80.png


12. Desde terminal
  • Nos ubicamos en el directorio NetBeansProjects
cd NetBeansProjects


  • Crear el directorio integracion continua
mkdir integracioncontinua


  • Entrar al directorio
cd integracioncontinua


  • Clonamos el proyecto
hg clone http://localhost:8000/ recipes





13. Abrirlo desde NetBeans IDE
ide.png


Tenemos el proyecto clonado
t.png


  • Cambiamos cualquier linea de codigo
public class NewMain {


   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       // TODO code application logic here
       System.out.println("programa principal");
   }
   
}



14. Selecccionar proyecto dar clic derecho
  • Mercurial->Commit
cc.png


  • Mercurial-->Remote->Push Current Branch
ss.png


Verificamos en el browser
rr.png

AVBravo - June 15, 2014 10:47 PM
Columnas editables en un datatable con primefaces

Utilizar <p:cellEditor>, y un facet name=”output” para mostrar la salida mediante un  <p:outputLabel> y un     <f:facet name="input"> donde usaremos un <p:inputText> para obtener los datos de entrada.
<p:ajax event="cellEdit" listener="#{pagosfijosSearchController.onCellEdit}" update=":form:growl,:form:datatableImpuestos" />

<p:column>
                               <f:facet name="header">
                                   <p:outputLabel value="#{msg.exoneracion}"/>
                               </f:facet>
                               <p:cellEditor>  
                                   <f:facet name="output">
                                       <p:outputLabel value="#{item.exoneracion}" >
                                            <f:convertNumber type="number" locale="Locale.US" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/>
                                       </p:outputLabel>
                                   </f:facet>
                                 
                                   <f:facet name="input">
                                       <p:inputText value="#{item.exoneracion}" >
                                                    <f:convertNumber type="number" locale="Locale.US" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/>
                                       </p:inputText>
                                   </f:facet>  
                               </p:cellEditor>  

                           </p:column>

AVBravo - June 15, 2014 10:31 PM
Obtener el número de fila de un datatable en primefaces

Usar la propiedad   rowIndexVar="rowIndex" de datatable

    <p:dataTable id="datatableImpuestos"
                                    rows="10"
                                    value="#{pagosfijosSearchController.listRecibosdetalles}"
                                    rowIndexVar="rowIndex"
                                    var="item"
                                    paginator="true"
                                    rowKey="#{item.idnivel6}"
                                    selectionMode="single"
                                    emptyMessage="#{app['info.notienedeudapendiente']}"

                                    selection="#{pagosfijosSearchController.selected}"
                                    filteredValue="#{pagosfijosSearchController.filtered}"
                                    editable="true" editMode="cell"
                                    >

CommandLink pasamos como parametro
<p:fragment autoUpdate="true">
                                   <p:commandLink update=":form"
                                                  value="#{item.idnivel6.idnivel6}"
                                                  action="#{pagosfijosSearchController.mostrarImpuestosPagar(rowIndex)}"
                                                  oncomplete= "PF('detallerecibosComponentDialogVar').show()"                                                         
                                                  title="#{app['boton.detalle']}"
                                                  rendered="#{menuBeans.pagos.consultar}"
                                                  >

                                       <f:setPropertyActionListener value="#{item}" target="#{pagosfijosSearchController.selected}" />  
                                   </p:commandLink>  

                               </p:fragment>


En el método definimos un parámetro de tipo Integer que contendra el numero de fila.
public String mostrarImpuestosPagar(Integer row){
       fila = row;
       
       encontarImpuesto();
       varexoneracion = selected.getExoneracion();
       varpago = selected.getPago();
       varsaldo = selected.getSaldo();
       return null;
       

   }

AVBravo - June 14, 2014 02:19 AM
Formatear decimales en Java Server Faces

En algunas ocasiones deseamos formatear decimales, en nuestra aplicación Java Server Faces
Podemos usar    <f:convertNumber  e indicamos los paremtros que deseamos.
locale = localización especifica
pattern = patrón deseado
type= especificar number para indicar que sera numeros.

 <p:outputLabel value="#{pagosfijosSearchController.impuestos.idnivel6.valor}">
                     <f:convertNumber type="number" locale="Locale.US" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/>

                </p:outputLabel>


APIDesign - Blogs - June 02, 2014 07:49 AM
Podcast related to Japanese Translation

--JaroslavTulach 07:49, 2 June 2014 (UTC)

AVBravo - May 31, 2014 11:47 PM
Instalacion de Mongodb

Instalacion de Mongodb

1. Descargarlo desde
o mendiante

2. Descomprimir el archivo y renombrar la carpeta como mongodb
mongo.png
estare en la ruta /home/avbravo/mongodb
3. Agregarlo al path en /etc/profile
  sudo gedit /etc/profile
  export PATH=$PATH:/home/avbravo/mongodb
Guardamos el archivo.

4. Desde la consola ejecutamos
export PATH=$PATH:/home/avbravo/mongodb


5. Crear el directorio data
sudo mkdir -p /data/db

6. Darle permisos de escritura a la carpeta
  sudo chmod 777 /data/db

7. Ejecutarlo

mongod
m.png
8. se muestra en la consola
f.png


9. Abrir otra ventana de consola
ejecutar
mongo
g.png


AVBravo - May 30, 2014 03:01 PM
Copiar la estructura de una tabla en MySQL desde NetBeans

Existen muchas formas de hacer este procedimiento, herramientas de migración, a través de script, en esta ocasión mostrare una utilidad dentro de NetBeans IDE, que te permite realizar la operación de manera sencilla.

Escenario:
 Tenemos un base de datos con una serie de tablas
Desde la pestaña de NetBeans, observamos la base de datos scrumweb



 Tenemos una base de datos llamada prueba

Deseamos copiar la estructura de la tabla gruposusuarios a la base de datos prueba.
Dar click derecho en gruposusuarios y seleccionar Grab Structure...


nos solicita el nombre del archivo 

nos ubicamos en la base de datos prueba, en tablas y selecionamos Recreate Table

seleccionamos el archivo .grab

se muestra el script, presionar el botón Ok, también se puede editar el script.

y se genera la estructura de la tabla en la nueva base de datos.















AVBravo - May 15, 2014 10:27 PM
Entrevista a Gerardo Nuñez sobre Java 8

Nuestro sexto entrevistado, es un gran amigo y figura muy prominente en el mundo del desarrollo de aplicaciones y gran colaborador en la promoción del conocimiento en Panamá. Gerardo Nuñez.


Podrías hablarnos algo sobre ti

En 1997 tuvimos nuestro primer contacto con Java 1.1 y luego desarrollamos algunos Applets en nuestra primear versión de banca en línea en 1998. Desde entonces hemos esta haciendo diferente cosas con Java.

¿Cual ha sido tu experiencia con Java?

Aunque hemos trabajado en varias versiones de java, el desarrollo de sistemas Web nos ha ocupado la primera década desde el año 2001 hasta la actualidad. En el 2007 nos unimos al grupo de usuarios de Java de Panamá. También hemos trabajado con Groovy y Grails. En la actualidad estamos viendo la posibilidad de desarrollar algunos proyectos con Scala. Estos lenguajes que trabajan con el JVM ofrecen algunas ventajas sobre java, pero más que competencia para java, han agradando su ecosistema.
Como siempre le digo a los estudiantes: Cuando hablamos de Java, el lenguaje es el 20% de los sistemas, el otro 80% es una serie de Frameworks y bibliotecas que han sido desarrolladas y probadas por muchos años.

¿Como consideras la  nueva versión Java 8?

Primero que todo hay que mencionar a los lambdas, ya que es el cambio que ha mi parecer ha llamado mas la atención a la comunidad de desarrolladores de Java. Alguien me comentaba que ahora con los Lambdas ya no era necesario aprender Scala. Quisiera mencionar que la implementación de los Lambas en Scala obedece al carácter Funcional de Scala, además hay algunas diferencias en el desarrollo en Scala y en Java. Las nuevas clases de Fecha y Hora creo que aunque no son tan impactantes como los Lambas eran necesarias y muy practicas.


¿Que opinas de lambda, stream?
Nos permiten que el código se muestre en una forma declarativa. Es una de las piezas mas importantes de esta nueva versión de Java. Pero implica también un cambio en la forma de implementar las soluciones en nuestro programas en Java.

¿Conoces empresas/desarrolladores que están migrando a Java8?
Todavía es un poco apresurado en hablar de migrar a Java 8. Creo que es tiempo de estudiar todas las bondades de esta nueva versión y planificar en migrar algunos módulos de sistemas existentes e iniciar el desarrollo de nuevos sistemas con Java 8.

¿Características deben ser agregadas o removidas de la plataforma?
Definitivamente es complicada la pregunta, pero te diría que hay que revisar otras plataformas y ver que podemos agregar a Java, como los Reconocimientos de Patrones (pattern matching) en Scala.


Recomendaciones

Antes de escribir una línea de código para un sistema en producción con las nuevas funcionalidades de Java 8. Hay que escribir bastante código de prueba y evaluar las ventajas de los nuevos API de Java 8 para estar seguro que es la solución a nuestro problema.


AVBravo - May 13, 2014 02:21 PM
Migrar de Primefaces 4.0 a Primefaces 5.0

La nueva versión de primefaces.org, contiene gran corrección de errores y mejoras en los componentes.

Alguna consideraciones para el proceso de migración desde NetBeans IDE
En el archivo pom.xml, actualizar la versión 5.0



Seleccionar el proyecto y Build with Dependences

en las dependencias se muestra la versión 5.0

En el archivo web.xml


implementamos  BeanValidation to HTML, agregando
 <context-param>
        <param-name>primefaces.TRANSFORM_METADATA</param-name>
        <param-value>true</param-value>
    </context-param>


<p:toolbarGroup> fue depreciado en esta versión

Cambiar
<p:toolbarGroup align="left">                     
por
<f:facet name="left"> 


Cambiar
<p:toolbarGroup align="right">                     
por
<f:facet name="right">


Cambiar
</p:toolbarGroup>
por
</f:facet>


Para acceder a los componentes como diálogos 
debemos utilizar
oncomplete="PF('myDialogo').show()"
en lugar de
oncomplete="myDialogo.show()"





AVBravo - May 13, 2014 02:10 PM
Algunos aspectos de NetBeans IDE

Actions Items
Seleccionar en el menú Windows->Action Items


muestra el componente Action Items

dar clic en Show action items for the selected projects

mostrara la lista de Action en el proyecto


Task
En el menú Windows->Task
clic derecho en Local Tasks seleccionar Create Task




Podemos crear y administrar nuestras tareas de forma local.

Historial 
El IDE nos permite de forma rápida ver el historial del código
En la pestaña History, se muestra la fecha y hora de los cambios realizados.

al dar clic, podemos observar la diferencia

dar clic derecho y seleccioar revert to 44












AVBravo - May 02, 2014 01:29 AM
Entrevista a Alexis Lopez sobre Java 8

La quinta entrevista es un honor entrevista a Alexis Lopez, quien nos comenta sobre Java 8



Podrías hablarnos algo sobre ti
Llevo alrededor de 14 años trabajando con tecnología Java y creo que he probado todos sus sabores: Java SE, Java EE y Java ME. Soy líder del grupo de usuarios Java de la ciudad de Cali (www.clojug.org) y blogger activo en www.java-n-me.com. Me gusta mucho esta tecnología y disfruto desarrollar aplicaciones usándola.

¿Cual ha sido tu experiencia con Java?
Empecé con Java por cosas del destino, había empezado a estudiar ing. de sistemas y el curso de algoritmos y programación era con Turbo Pascal, por allá en 1999. Tuve que abandonar mis estudios por cumplir con mi deber ciudadano de prestar servicio militar en mi país y cuando regresé, 1 año más tarde, la universidad ya estaba usando Java, por lo que repetí el curso y desde entonces no me he separado de Java. 

¿Como consideras la  nueva versión Java 8?
Un gran cambio. La verdad, si alguien no se interesa en aprender la nueva forma de programar usando lambdas, el día de mañana no va a ser capaz de leer código escrito por otra persona que sí las use. Esta versión tiene características nuevas que permitirán escribir código más claro y con más significado, sin dejar de lado mejoras en rendimiento y la posibilidad de aprovechar las capacidades multicore de las máquinas de hoy en día.

¿Que opinas de lambda, stream?
Lo mejor de esta versión. A mi parecer, es la característica más importante que tiene Java 8. Cuando la presentamos en las reuniones de nuestro grupo de usuarios, todos los asistentes quedan asombrados y motivados con esta nueva forma de programar y con las ventajas y bondades que ofrecen. Lo que se puede hacer con stream en colecciones me parece que nos va a dar a los desarrolladores herramientas fáciles de usar para el manejo de grandes cantidades de información y aprovechando al máximo las capacidades multicore de las máquinas.

¿Conoces empresas/desarrolladores que están migrando a Java8?
La semana pasada realizamos el lanzamiento de Java 8 en Colombia en lo que fue denominado Java 8 Tour, dónde evangelistas y Java Champions están visitando diferentes JUGs alrededor del mundo para llevar a cabo conferencias y talleres. No pasará mucho hasta que algunos de nuestros miembros empiecen a desarrollar/migrar aplicaciones de sus empresas a Java 8.

¿Características deben ser agregadas o removidas de la plataforma?
Esta es una pregunta muy complicada por la cantidad y diversidad de las aplicaciones que existen, no me siento en capacidad de responderla.

Recomendaciones
Definitivamente actualizarse a Java 8, aprovechar las nuevas características de fechas y tiempo, lambdas, streams, etc. Asistir a los eventos que organicen los grupos de usuarios para estar al día con lo nuevo de Java y como no, asistir a los eventos virtuales que tiene Oracle al respecto.




AVBravo - April 16, 2014 02:00 PM
Revisión del libro Learning PrimeFaces Extensions Development

El libro "Learning PrimeFaces Extensions Development "
http://www.packtpub.com/learning-primefaces-extensions-development/book


Ofrece una explicación detallada del uso de PrimeFaces Extension, de manera que podemos trabajar rápidamente con un proyecto utilizando los diversos componentes.
Explicación detallada y fácil, te permitirá conocer y crear una aplicación completa.
Se muestra el uso de Layout, Dinamyc Forms, entre otros.
Sin duda un libro necesario.

AVBravo - April 14, 2014 08:01 PM
Entrevista a Adam Bien sobre Java 8

En esta cuarta entrevista converse con Adam Bien, quien ha escrito varios libros sobre JavaEE, acerca de su opinión sobre Java8

 




 1.Could you  tell us something about yourself
My name is Adam Bien (adam-bien.com), I'm a contractor / freelancer and so Singleton.  I really like the Java Programming Language.
Three times a year I'm delivering Java EE workshops at the MUCs Airport to an truly international audience -- http://airhacks.com

 2. What has been your experience with Java?
I'm working with Java since 1995. I started implementing serverside Java with the JavaWebServer. On the client I started with Applets, AWT, then evaluated JFC, then Swing, first versions of JavaFX Script. Java remains exciting. I really like it.

3. How do you consider the new Java 8 release?
It is a really big deal. I used Java 8 for about one year. Since the last JavaOne Java 8 is really stable. I ran NetBeans and all my development on Java 8 daily builds.

Also Nashorn is exciting. It saved me already several hours of my time with the maintenance of my web sites: https://github.com/AdamBien/spg


 4. What do you think of lambda, stream?
I already removed JPA with JPA QL and replaced it with plain domain objects, an in memory-grid and Lambdas with streams.
I think Java 8 will have a huge impact on Java EE architectures.


5. Do you know companies / developers who are migrating to Java8?
There is nothing to migrate :-). In some projects we just launched the server on Java 8.

Other projects were started already last year on Java 8--just because of lambdas. If possible you should upgrade as fast as possible to Java 8.


 6. What are the characteristics that should be added to or removed from the platform?
I really miss Jigsaw. Even more syntactic sugar would be nice, but I really like the direction Oracle's engineers are going with Java.


 7- Recommendations

Stay passionated and enjoy hacking. Keep away from meetings, politics and the boring stuff :-)

Thank you for the interview!

 workshops.adam-bien.com
 blog.adam-bien.com
 about.adam-bien.com

 Author of:
 "Real World Java EE Night Hacks", "Real World Java EE Patterns--Rethinking Best Practices"

AVBravo - April 11, 2014 02:05 PM
Entrevista a Constantin Drabo sobre Java 8


Continuando con la serie de entrevistas sobre Java8, en esta ocasión converse con mi amigo Drabo.

1.Could you  tell us something about yourself
I'm Constantin Drabo from Burkina Faso where I'm working as software
engineer in National Treasury Office. I'm founder  FasoJUG  and Google
Developer Group  manager. I'm also contributor at both NetBeans
Community and Fedora Project where I've been elected as ambassador
since 2010.



2. What has been your experience with Java?
My first contact with Java is in 2002 when I'm student. I wrote my
first java program after reading the book of Anne
Tasso(http://www.editions-eyrolles.com/Livre/9782212111002/le-livre-de-java-premier-langage)
. I developed also several applications both academic and
professional. In my free time I help java moving forward by publishing
tutorials and evangelize.

3. How do you consider the new Java 8 release?
This release is seriously a great bunch for Java technology. I think
Oracle mistook by evolving slowly the platform. They should add  the
new features since a while.
This release comprises several interesting features. The prominent
ones are Java Embedded ,  scripting language support and IoT (Internet
of Things).

4. What do you think of lambda, stream?
With Lambda expression  they introduced functional programming into
Java. This concept is not new since there are already several language
that integrate it (PHP, Ruby, etc). In syntax level it is very strong
, but I skeptical according it usefulness. I think it can be a
concurrent of Nashorn which introduces the usage of a functional
language; JavaScript.Stream API contents  some important classes that
makes easy parallelization.


5. Do you know companies / developers who are migrating to Java8?
Franky speaking, the Java technology is very slow to be adopted here
in companies. Most of them use proprietary solutions and Java is
seeing as a hard adopted technology.
But some are very fun of Java !  I do not know if someone is ready to
move to Java 8 soon.


6. What are the characteristics that should be added to or removed from the platform?
The plateform is becoming  rich and complete. I think there is nothing
to be removed.

7- Recommendations
Java 8 is great  move on it as quick as possible  !


Constantin

AVBravo - April 03, 2014 02:13 PM
Entrevista a Jorge Guerra Guerra sobre Java 8

Continuando con la serie de entrevistas sobre Java 8, en esta ocasión conversamos con nuestro gran amigo Jorge Guerra.

Sitio web: https://sites.google.com/site/jguerra91/



1. Podrías hablarnos algo sobre ti

Soy Ing. Electronico y Lic. en Computación, trabajo como docente en Sistemas Distribuidos en la Universidad Nacional Mayor de San Marcos y en la Universidad Inca Garcilaso de la Vega, y soy capacitador en New Horizons Peru S.A. en todo lo que es tecnología Java.
He escrito dos libros de Java con Netbeans (Cliente / Servidor y aplicaciones Web), trabajo en tecnologías de todo nivel desde 1999, y actualmente desarrollo aplicaciones en Android usando Android Developer Tools (también en Java) 


2. ¿Cual ha sido tu experiencia con Java?
Desde que conocí Java (en 1998, usando Visual Age for Java de IBM) he apoyado el desarrollo de soluciones informáticas usando este lenguaje. En Peru, es el lenguaje ,mas usado, tanto en aplicaciones académicas como en desarrollos empresariales y he tenido oportunidad de participar en varias proyectos web y actualmente en la nube (usando Google App Engine) y ha sido realmente una gran experiencia profesional.

3.¿Como consideras la  nueva versión Java 8?
Es una versión que implementa ideas muy interesantes que van a obligar a cambiar código en muchos proyectos actuales, pero sobre todo en aquellas en la que se esta implementando aplicaciones sobre Cloud Computing, debido a las bondades que ofrecen los nuevos conceptos sobre stream , lambda y el nuevo papel que asumen las interfaces.

4. ¿Que opinas de lambda, stream?
Lo mejor que le pudo pasar a Java, es una apuesta clara a un código muchos mas compacto y definitivamente una evolución definitiva a la computación paralela que hace tiempo Java debió impulsar.
Otra cosa fundamental es stream que impulsa el concepto map/reduce indispensable cuando se hacen aplicaciones en Cloud Computing y sobre todo cuando se usan bases de datos NoSQL.

5.¿Conoces empresas/desarrolladores que están migrando a Java8?
Varias empresas de desarrollo están evaluando las nuevas características en algunos desarrollos actuales, pero todavía no hay una aplicación concreta que se este desarrollando con Java 8.

6.¿Características deben ser agregadas o removidas de la plataforma?
Me parece muy importante que se agregue de manera definitiva la posibilidad de convertir automáticamente datos de tipo simple a String y viceversa, mejoraría mucho el código. En AppInventor se realiza esto sin ningún problema.
Otra cosa que debería agregarse es un modelo de parseo XML similar al de JDom que me parece mucho mas practico que el tradicional org.xml del JDK actual.

7.Recomendaciones
Divulgar en articulos y charlas los nuevos conceptos alrededor de lambda, para que los nuevos programadores los puedan usar en futuros desarrollos.



AVBravo - April 01, 2014 04:32 PM
Entrevista a Raul Casado Piqueras sobre Java 8

En esta ocasión haré una serie de entrevistas a grandes desarrolladores Java sobre su opinión acerca de Java 8.
Tenemos la primera entrevista que corresponde a un gran amigo Raul Casado Piqueras, quien ha contribuido durante muchos años en las comunidades hispanas de Java.

  1.  

1. Podrías hablarnos algo sobre ti

Soy Ingeniero Informático y llevo trabajando con tecnologías de la información desde hace más de 15 años. Trabajo como consultor y director de proyectos para compañías que tienen presencia en grandes clientes, con necesidades tecnológicas muy dispares. 

2. ¿Cual ha sido tu experiencia con Java?
Java ha sido uno de los lenguajes en los que me inicié en el mundo de la programación profesional y en el que más recorrido he tenido, hasta el punto que es una de mis áreas de conocimiento más fuerte. No sólo por conocimientos en el lenguaje en sí mismo, sino por el ecosistemas de herramientas que han evolucionado en torno al mismo. 

3.¿Como consideras la  nueva versión Java 8?
A lo largo de las diferentes versiones que se han ido lanzando se han ido incorporando funcionalidades muy interesantes, y sin duda en esta ocasión las novedades son muy esperadas. Las mejoras a nivel de JVM son cruciales en entornos empresariales, donde la crisis actual ha obligado a volver a pensar en términos de optimización de recursos.

4.¿Que opinas de lambda, stream?
Otra mejora cuya aplicación a nivel profesional es crucial: permite econtrar economías de escala a nivel de código, permitiendo al desarrollador un código más fácil de mantener, más sencillo de construir y mucho más reutilizable, más allá de la encapsulación de contenido. Generics, annotations y ahora lambda, son armas indispensables para conseguir un código mantenible, reutilizable y ajustado a las necesidades de los clientes.
Stream por otro lado, es una mejora que a priori puede suponer en los entornos empresariales un ahorro enorme, sobre todo al implementar estrategias como por ejemplo paralelizar su procesamiento. No sólo permite tener un código más sencillo, sino que simplifica la distribución de la carga de trabajo entre los diferentes núcleos o cualquier otra estrategia que se adapte a las necesidades de negocio

5. ¿Conoces empresas/desarrolladores que están migrando a Java8?
Personal y profesionalmente estoy animando a mis clientes a incluir las nuevas características de Java8 a sus soluciones. Son ventajas competitivas que deben ser aprovechadas lo antes posible porque son la evolución natural del lenguaje y el futuro del desarrollo. Nadie se acuerda hoy de cuando aparecieron los Collections y como se cuestionaba su idoneidad ... y hoy en día son claves en cualquier solución Java! 

6. ¿Características deben ser agregadas o removidas de la plataforma?
Cualquier simplificación del lenguaje es bienvenida y sin duda las optimizaciones y el profiling son algo que todos deseamos. Cuanto más sencillo sea el lenguaje en sí, mucho mejor. Closures, con la aparición de Lambda, puede que pasen a la historia, de la misma manera que Iterator lo haga con Stream. Sin duda, serán los desarrolladores los que decidirán que encaja más en la soluciones. No debemos olvidar que las soluciones que hay basadas en Java se cuentan por millones, por lo que hay cosas que son difíciles de eliminar, sobre todo si la comunidad vuelve a tener un papel relevante.

7.Recomendaciones
No hay que tener miedo a probar las nuevas funcionalidades que Java 8 ofrece, al contrario, hay que intentar ver en ellas una oportunidad para crear un código más sencillo, mantenible, eficiente y óptimo. Un lenguaje que nos centre en el desarrollo y menos en el lenguaje en sí, es sin duda nuestra mejor oportunidad para satisfacer mejor las necesidades de nuestros clientes




AVBravo - March 29, 2014 05:44 PM
Crear componentes Java Server Faces con NetBeans

Crear componentes Java Server Faces

En este ejemplo tenemos el siguiente dialogo.


podemos reemplazarlo por un un componente personalizado


Pasos para la creación del componente
 Crear la carpeta javscaz dentro de resources
Crear la pagina eliminar.xhtml


En la sección  <composite:interface>
Definimos el nombre del atributo con <composite:attribute name>
para los métodos usamos  method-signature y especificamos el tipo de valor de retorno.


En la sección <composite:implementation>, realizamos la implementacón del codigo.
Para usar el valor  nos basamos en la sintaxis cc.attrs.nombredelatributo 

  <p:commandButton id="removeButton" value="#{app['boton.yes']}"
                                 update="#{cc.attrs.buttonYesUpdate}"
                                 oncomplete="#{cc.attrs.buttonYesOncomplete}"
                                 actionListener="#{cc.attrs.buttonYesAction}" />


Secciones:
1. namespace
2. composite interface
3. composite implementation
4. uso de componentes




En la pagina que deseamos usarlo nivel1.xhtml
en el namespace incluir (nombre de la carpeta en resources)
 xmlns:javscaz="http://java.sun.com/jsf/composite/javscaz"

Agregar el componente formato: namespace:nombredecomposite, y colocamos los valores a los atributos.
  <javscaz:eliminar
                            buttonNoOnclick="PF('confirmationwidgetVar').hide()"
                            
                            buttonYesAction="#{nivel1Controller.delete()}"
                            buttonYesOncomplete="PF('confirmationwidgetVar').hide();"
                            buttonYesUpdate=":form:panel,:form:growl"
                            />







AVBravo - March 28, 2014 03:27 PM
Java 8 Launch

Videos sobre Java 8



AVBravo - March 26, 2014 02:55 PM
lambda operación de suma usando NetBeans 8

lambda operación de  suma   usando NetBeans 8

Tradicional mente podemos realizar la suma de las personas con edad >= 30
Integer suma=0;
    for(Persona p:list){
                  if(p.getEdad() >=30 ){
                      suma += p.getEdad();
                  }
               
              }

si utilizamos lambda

  suma = list.stream().filter((p) -> (p.getEdad() >=30 )).map((p) -> p.getEdad()).reduce(suma, Integer::sum);

AVBravo - March 26, 2014 02:37 PM
NetBeans 10,15 años

Algunos recuerdos de los aniversarios de NetBeans
NetBeans 10 años




NetBeans 15 años






AVBravo - March 25, 2014 07:10 PM
Lambda JDK8 con NetBeans para Novatos

Ejemplo sencillo de Lambda con NetBeans


Crear un proyecto nuevo
File--> New Project-->Categories: Maven Projects: Java Application

Indicamos el nombre del proyecto

El IDE genera el esqueleto del proyecto



En propiedades del proyecto
Sources--> Source/Binary Format:



Crearemos una clase llamada Persona con los atributos (id,nombre,edad)
Clic derecho el paquete com.avbravo.testlambda --> New--> Java Class




Colocar el nombre: Persona

El IDE genera la nueva clase
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.avbravo.testlambda;

/**
 *
 * @author avbravo
 */
public class Persona {
    
}

Clic derecho en el código -->Seleccionar Insert Code...


Seleccionar Add Property...

Agregamos la propiedad id y tipo String. Se generan los métodos set/get
repetimos el proceso para el atributo String nombre, Integer edad;
Agregamos los métodos constructores
 public Persona() {
    }

    public Persona(String id, String nombre, Integer edad) {
        this.id = id;
        this.nombre = nombre;
        this.edad = edad;
    }

Agregar el método toString(). Clic derecho Insert Code---> toString()


@Override
    public String toString() {
        return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
    }

Código completo Persona.java:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.avbravo.testlambda;

/**
 *
 * @author avbravo
 */
public class Persona {
    
    private String id;

    private String nombre;

    private Integer edad;

    public Persona() {
    }

    public Persona(String id, String nombre, Integer edad) {
        this.id = id;
        this.nombre = nombre;
        this.edad = edad;
    }

   
    

    /**
     * Get the value of edad
     *
     * @return the value of edad
     */
    public Integer getEdad() {
        return edad;
    }

    /**
     * Set the value of edad
     *
     * @param edad new value of edad
     */
    public void setEdad(Integer edad) {
        this.edad = edad;
    }

    /**
     * Get the value of nombre
     *
     * @return the value of nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Set the value of nombre
     *
     * @param nombre new value of nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Get the value of id
     *
     * @return the value of id
     */
    public String getId() {
        return id;
    }

    /**
     * Set the value of id
     *
     * @param id new value of id
     */
    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Persona{" + "id=" + id + ", nombre=" + nombre + ", edad=" + edad + '}';
    }


}

Crear una Java Main Class...





Agregamos un ArrayList<Persona> , escribimos un segmento de código sin usar Lambda, donde usamos un for y una condición lógica para filtrar 
  for(Persona p:list){
                  if(p.getEdad() >=30 ){
                       System.out.println(" --> "+p.toString());
                  }
                 
              }
clic en el asistente y seleccionar Use functional Operation

el ide genera el código lambda
 list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
                System.out.println(" --> "+p.toString());
            });

Se usa un stream() de la lista ,se aplica el filtro 


Código Completo

  package com.avbravo.testlambda;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author avbravo
 */
public class Prueba {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       try {
              List<Persona> list = new ArrayList<>();
              list.add(new Persona("1","anna",25));
              list.add(new Persona("2","jhoan",30));
              list.add(new Persona("3","maria",40));
              System.out.println(" sin utilizar lambda");
              for(Persona p:list){
                  if(p.getEdad() >=30 ){
                       System.out.println(" --> "+p.toString());
                  }
                 
              }
              System.out.println("lambda");
              list.stream().filter((p) -> (p.getEdad() >=30 )).forEach((p) -> {
                System.out.println(" --> "+p.toString());
            });
        } catch (Exception e) {
            System.out.println("Error "+e.getLocalizedMessage());
        }
      
    }

Ejecutamos el proyecto

    
}

AVBravo - March 20, 2014 04:35 PM
One Click Open Sesame

Geertjan Wielenga, desarrollo el plugin  One Click Open Sesame 
que permite abrir los archivos al dar simplemente un click.

Descargarlo desde: http://plugins.netbeans.org/plugin/53723/?show=true






Instalarlo
Menu NetBeans: Tools-->Plugin


Seleccionar la pestaña Downloaded, dar clic en el botón Add Plugins.., seleccionar el archivo .nbm descargado.

dar clic en el botón Install

luego de haberlo instalado simplemente al dar un clic sobre el archivo este se abre en el Editor.



AVBravo - March 18, 2014 07:50 PM
NetBeans IDE 8.0 Disponible

Esta disponible la versión final de NetBeans 8.0
https://netbeans.org/downloads/index.html


AVBravo - March 18, 2014 07:39 PM
JAVA SE8 disponible


Disponible JDK8





AVBravo - March 18, 2014 05:05 PM
Conexión Base Datos WildFly

Conexión Base Datos WildFly

Fuente:

Agregar Driver JDBC MySQL

Descargarlo desde
http://dev.mysql.com/downloads/connector/j/


En Runtime→Manage Deployments→presionar el botón Adda.png


presionar el botón Seleccionar archivo

sd.png










seleccionar el driver jdbc mysqlmysql.png



Presionar el botón Nextn.png




Presionar el botón Savesa.png



Se muestra el driver agregado,Dar clic en En/Disables.png





Confirmar la solicitud

r56.png

Se muestra el conector habilitado

ens.png

Crear un modulo

Pasos:
  1. Entrar al directorio /modules/system/layers/base/com dentro de wildFly
  2. crear el directorio mysql/main
  3. Copiar el jdbc driver a ese directorio
  4. Crear el archivo module.xml



Entrar el directorio
cd wildfly-8.0.0.Final/modules/system/layers/base/com


Crear el directorio mysql
mkdir mysql


Crear el directorio main
cd mysql
mkdir main


Copiar el driver jdbc mysql al directorio main recién creados.png


Crear el archivo module.xml
gedit module.xml


<?xml version="1.0" encoding="UTF-8"?>
       <module xmlns="urn:jboss:module:1.1" name="com.mysql">
           <resources>
               <resource-root path="mysql-connector-java-5.1.29-bin.jar"/>
           </resources>
           <dependencies>
               <module name="javax.api"/>
               <module name="javax.transaction.api"/>
           </dependencies>
       </module>


Agregar la configuración
Podemos hacerlo desde la línea de comandos o editar directamente el archivo standalone.xml
Editaremos el archivo standalone.xmlt
gedit  wildfly-8.0.0.Final/standalone/configuration/standalone.xml
Localizamos <datasources>, agregamos el driver

d.png

Agregamos el driver
<driver name="mysql" module="com.mysql">
     <xa-datasource-class>
       com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
     </xa-datasource-class>
   </driver>


s.png

En Profile→ Connector→Datasources dar clic en Add

add.png


En Name colocamos el nombre rigemdb
y en JNDI Name a diferencia de GlassFish debemos incluir el prefijo java:/
java:/jdbc/rigmendb

n.png




En la siguiente ventana como detecto el driver mysql dar clic en Nextd.png




Especificar


  • Connection URL: jdbc:mysql://localhost:3306/rigemdb
  • Username: root
  • Password: secret

d.png







Se muestra, el datasourcesa.png



presionar el botón Enable,d.png
presionar el botón Confirm , para confirmar la solicitud
Queda habilitadoa.png


Seleccione la pestaña Pool y presione el botón Edit4.png



y cambie los valores Min Pool Size a 5 y Max Pool Size a 15 y presione el botón Save

a.png













En la pestaña Connection dar clic en el botón Test Connection

t.png

Nos envía el mensaje de conexión exitosad.png



AVBravo - March 17, 2014 07:21 PM
Línea de Comandos WildFly

Línea de Comandos WildFly

Para usar la consola de administración debemos ejecutar jboss-cli.sh

./jboss-cli.sh

s.png


Conectarse al server
ejecutar el comando
connectcc.png

Si es exitoso se muestra el prompt como aparece en la figura.

Para salir
ejecutar

quit


AVBravo - March 17, 2014 04:26 PM
Crear un pool de Conexiones en GlassFish

En Glassfish podemos crear el pool de conexiones desde la interfaz en el browser


O podemos editar el archivo domain.xml , ubicado
en glassfish-4.0/glassfish/domains/domain1/config

gedit gedit glassfish-4.0/glassfish/domains/domain1/config/domain.xml

en la sección  <resources>
Agregamos
  • jdbc-connection-pool: Para crear el pool de conexión
  • jdbc-resource pool-name: Para crear recursos JDBC

<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" 
                          res-type="javax.sql.DataSource" name="scrumwebPool">
      <property name="password" value="secreted"></property>
      <property name="user" value="root"></property>
      <property name="databaseName" value="scrumweb"></property>
      <property name="portNumber" value="3306"></property>
      <property name="url" value="jdbc:mysql://localhost:3306/scrumweb"></property>
    </jdbc-connection-pool>
    <jdbc-resource pool-name="scrumwebPool" jndi-name="scrumweb"></jdbc-resource>








AVBravo - March 17, 2014 02:23 PM
Crear usuarios en WildFly

Arrancar WildFly
cd wildfly-8.0.0.Final/bin/

./standalone.sh

En el browser ingresar



Agregamos un usuario
./add-user.sh
Se despliega un menú donde nos solicita el tipo de usuariotipo.png
en este caso seleccionamos a  y presionamos enter
Ahora solicita  el nombre del usuarioadd.png


Luego ingresamos el passwordpassword.png
Se solicita la confirmación del password
Solicita los grupos. Dejamos en blanco y presionamos entergrupos.png
Respondemos yes a la solicitud de confirmación.yes.png
Solicita confirmación de confirmación, respondemos yesejbs}.png

Ahora si entramos al browser
nos solicita el usuario y password.9090..png
Aparece la página de administraciónadmin.png

AVBravo - March 12, 2014 07:46 PM
Integrar WildFly con NetBeans

Integrar WildFly con NetBeans

Descargar WildFly desde

Descomprimir el archivo .zip
s.png

Entrar al directorio bin
cd /wildfly-8.0.0.Final/bin
Ejecutar
./standalone.sh

En el browser
Para administración: localhost:9990

9990.png
Para aplicaciones:    localhost:8080l.png


Descargar el Plugin WildFly

Instalamos el plugin

En la pestaña Services
add.png



Seleccionamos Server: WildFly Application Server
w.png

Seleccionamos el directorio
ub.png




Y dejamos la configuración predeterminadainstancia.png



Con esto tenemos el servidor configurado
s.png

AVBravo - March 12, 2014 07:05 PM
Reportes Agrupados con iReport + Java Server Faces + JPA

Reportes Agrupados con iReport + Java Server Faces + JPA

y.png

Definimos los Fieldsca.png



dar clio derecho en report name seleccione Add Report Group

aa.png


indicar el nombre y seleccionar el Fielde.png



marcar Add the group header y Add the group footerf.png














En el diseñador arrastrar los atributos a la sección de grupo  y a detalle los correspondientes.A.pngEn



AVBravo - March 12, 2014 06:59 PM
Reportes iReport + Java Server Faces + JPA

Reportes iReport + Java Server Faces + JPA

Crearemos un reporte de usuarios mostrando el grupo de usuario que pertenece el otro  Entity


r.png



Entity Usuarios

Si observamos existe el atributo idgrupousuario de tipo Grupousuario
public class Usuarios implements Serializable {
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 70)
   @Column(name = "tema")
   private String tema;


   @JoinColumn(name = "idmunicipio", referencedColumnName = "idmunicipio")
   @ManyToOne(optional = false)
   private Municipios idmunicipio;
   private static final long serialVersionUID = 1L;
   @Id
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 35)
   @Column(name = "username")
   private String username;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 150)
   @Column(name = "password")
   private String password;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 60)
   @Column(name = "nombre")
   private String nombre;
@JoinColumn(name = "idgrupousuario", referencedColumnName = "idgrupousuario")
   @ManyToOne(optional = false)
   private Grupousuarios idgrupousuario;







Editamos el Entity Grupousuario

En el método toString() retornamos el atributo que deseamos mostrar


public class Grupousuarios implements Serializable {
   private static final long serialVersionUID = 1L;
   @Id
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 35)
   @Column(name = "idgrupousuario")
   private String idgrupousuario;
   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 50)
   @Column(name = "grupousuario")
   private String grupousuario;


@Override
   public String toString() {
      // return "com.javscaz.rigemjsf.Grupousuarios[ idgrupousuario=" + idgrupousuario + " ]";
       return grupousuario;
   }





Diseñamos el reporte

Agregar los atributos en Fieldsf.png


Nos ubicamos en el atributo idgruposusuario y seleccionar propiedades, en Field Class colocamos java.lang.Object
con esto invocaremos el método toString() del entity Grupousuario.f.png









Arrastramos los atributos al reporte.

d.png

AVBravo - February 26, 2014 08:00 PM
NetBeans IDE 8.0 RC1 Download

Ya esta disponible NetBeans IDE 8.0 RC1 Download
Desde el siguiente enlace
http://dlc.sun.com.edgesuite.net/netbeans/8.0/rc/

Características disponibles con esta liberación
https://netbeans.org/community/releases/80/relnotes.html


AVBravo - February 23, 2014 07:04 PM
Corregir error / UI Layout Initialization Error

Cuando desarrollamos una aplicación Java Server Faces podemos encontrarnos algunos errores en este caso mostraremos la imagen, cuando se trata de cargar una pagina.


Generalmente este error se genera cuando se hace referencia a un objeto con un id no existente,

En NetBeans  nos ubicamos en la consola de GlassFish , como observamos en la figura en el punto 1, indica que se esta haciendo referencia al objeto llamado toolbar, pero en nuestra pagina el componente toolbar tiene el id="toolbar1", lo que muestra que el componente con nombre toolbar no existe, la solución es colocarle el id="toolbar".




AVBravo - February 17, 2014 03:46 PM
PAGINA CON 4 SelectOneMenu

PAGINA CON 4 SelectOneMenu
En este ejemplo mostraremos el uso de selectOneMenu, en el cual se actualizaran dependiente de la selección que se realice

    <h:outputLabel value="#{msg.idnivel1}" for="idnivel1" />
                               <p:selectOneMenu converter="nivel1Converter" id="idnivel1"
                                                value="#{nivel2SearchController.nivel2.idnivel1}"                                                 
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                   <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>  
                                   <f:selectItems value="#{nivel1SearchController.items}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel1} - #{item.nombre}"                                                    
                                                  />
                                   <p:ajax  process="idnivel1"  event="change"
                                            update=":form:idnivel2,:form:growl"
                                            listener="#{nivel2SearchController.changeItems()}"/>                                     
                               </p:selectOneMenu>
                               
                               <h:outputLabel value="#{msg.idnivel2}" for="idnivel2" />
                               <p:selectOneMenu converter="nivel2Converter" id="idnivel2"
                                                value="#{nivel3SearchController.nivel3.idnivel2}"  
                                                required="true" requiredMessage="#{msg.idnivel2} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                    <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>  
                                   <f:selectItems value="#{nivel2SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel2} -  #{item.nombre}"
                                                  />
                                      <p:ajax  process="idnivel2"  event="change"
                                            update=":form:idnivel3,:form:growl"
                                            listener="#{nivel3SearchController.changeItems()}"/>        
                               </p:selectOneMenu>
                               
                                <h:outputLabel value="#{msg.idnivel3}" for="idnivel3" />
                               <p:selectOneMenu converter="nivel3Converter" id="idnivel3"
                                                value="#{nivel4SearchController.nivel4.idnivel3}"  
                                                required="true" requiredMessage="#{msg.idnivel3} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                     <f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>
                                   <f:selectItems value="#{nivel3SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel3} -  #{item.nombre}"
                                                  />
                                             <p:ajax  process="idnivel3"  event="change"
                                            update=":form:idnivel4,:form:growl"
                                            listener="#{nivel4SearchController.changeItems()}"/>     
                               </p:selectOneMenu>
                               
                                
                                    <h:outputLabel value="#{msg.idnivel4}" for="idnivel4" />
                               <p:selectOneMenu converter="nivel4Converter" id="idnivel4"
                                                value="#{nivel5Controller.nivel5.idnivel4}"  
                                                required="true" requiredMessage="#{msg.idnivel4} #{app['info.required']}"
                                                filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
                                   
                                   <f:selectItems value="#{nivel4SearchController.itemsEntity}"
                                                  var="item"
                                                  itemValue="#{item}"
                                                  itemLabel="#{item.idnivel4} -  #{item.nombre}"
                                                  />
                                         
                               </p:selectOneMenu>

                                


AVBravo - February 05, 2014 01:54 PM
SelectOneMenu

SelectOneMenu

Para realizar filtros en el selectOneMenu utilizamos
filter="true" filterMatchMode="startsWith"



Mostrar  atributos combinados del método toString() del Entity


En el Entity Nivel1.java editar el método toString(), en el return colocamos los atributos que deseamos que devuelva.
@Override
   public String toString() {
     return idnivel1 + " - "+ nombre;
  //   return "com.javscaz.rigemjsf.Nivel1[ idnivel1=" + idnivel1 + " ]";
   }

 En la página no especificamos el itemLabel para que se invoque directamente el método  toString()
Queda de la siguiente manera.

Mostrar el atributo a través de itemLabel

Para mostrar el atributo en el mismo formulario indicamos el itemLabel y la propiedad a mostrar.




















SelectOneMenu con atributos combinados en la página

En el itemLabel indicamos los atributos que deseamos mostrar
                                    itemLabel="#{idnivel1Item.nombre} - #{idnivel1Item.idnivel1}"



<p:selectOneMenu converter="nivel1Converter" id="idnivel1"
                                  value="#{nivel3Controller.nivel3.idnivel1}"
                                  required="true" requiredMessage="#{msg.idnivel1} #{app['info.required']}"
                                                 filter="true" filterMatchMode="startsWith" effect="fade"
                                                >
                                   <!-- TODO: update below reference to list of available items-->
         <f:selectItems value="#{nivel1SearchController.items}"
                      var="idnivel1Item"   itemValue="#{idnivel1Item}"
                                                  itemLabel="#{idnivel1Item.idnivel1} - #{idnivel1Item.nombre} "
                                                  />
</p:selectOneMenu>
                               

AVBravo - February 01, 2014 05:15 PM
Felicidades a Apuntes de Java

En esta ocasión me complace comentar que el blog de nuestro amigo Diego Silva, cumple 8 años
http://www.apuntesdejava.com/
Sin dudas sus aportes a la comunidad Java, NetBeans durante todo este tiempo han sido muy valiosos, entre tutoriales, consejos, traducción del IDE.
Saludos y felicidades

AVBravo - January 30, 2014 07:28 PM
EVENTO AJAX AL INICIAR UN DIÁLOGO

EVENTO AJAX AL INICIAR UN DIÁLOGO


Si deseamos que cada vez que se muestre un diálogoo este limpie los registros de un datatabled usamos      <p:ajax onstart> e invocamos el método para limpiar el list.
<p:dialog header="#{form['nivel1.search']}"
                     closable="false" showEffect="clip"
              
                     hideEffect="fade"

                     height="335"  width="750"
                     widgetVar="searchDialogWidgetVar">
              
               <p:ajax onstart="#{nivel1SearchController.clear()}" update=":form:growl" listener="#{nivel1SearchController.clear()}"/>



Método limpia el list

public String clear(){
   nivel1List = new ArrayList<>();
       return null;

}



AVBravo - January 22, 2014 04:01 AM
Usar fragmentos

En algunos paginas que estan ligadas en Entity, deseamos realizar operaciones como busquedas por un atributo, la validación nos impediria realizar estos llamados , para ello utilizamos   <p:fragment autoUpdate="true">  y colocamos dentro de el los atributos y commandButton a utilizar.


   <p:fragment autoUpdate="true">
                                        <h:inputText id="idnivel1" value="#{nivel1Controller.nivel1.idnivel1}" title="#{msg.idnivel1}" required="true" requiredMessage="#{msg.idnivel1} #{app['info.required']}" />

                                        <p:commandButton value="Buscar" icon="ui-icon-search"
                                                         update="panel,growl,form" action="#{nivel1Controller.buscar}"/>
                                    </p:fragment>

Si no usaramos el <p:fragment> se generarían los mensajes indicando la validación


al usar el <p:fragment> solo se valida el atributo especificado
formulario completo


AVBravo - January 15, 2014 04:32 PM
NetBeans 8 Beta disponible

Ya esta disponible NetBeans 8 Beta
https://netbeans.org/community/releases/80/


Alguna de las características:

  • Soporte JDK 8
  • Tomcat 8.0 and TomEE support

AVBravo - January 06, 2014 01:18 PM
Enterprise Tab en NetBeans

Se agrego un nuevo tab en el portal de NetBeans, Enterprise https://netbeans.org/enterprise/index.html

aquí podrás encontrar información de carácter empresarial relacionada con NetBeans.

AVBravo - January 02, 2014 07:20 PM
PrimeFaces Search Expression Framework

PrimeFaces Search Expression Framework

Cuando deseamos hacer búsquedas, generalmente nos encontramos que las reglas de validación nos impediran ejecutar determinadas acciones, tenemos algunas alternativas para evitar esto con campos requeridos, en un commandButton utilizar immediate="true", o utitlizar PrimeFaces Search Expression Framework.
http://www.primefaces.org/showcase/ui/searchExpressions.jsf


Utilizamos process="@this" e indicamos el id del objeto.

 <p:commandButton actionListener="#{estatusController.find2(actionEvent)}" process="@this,idestatus" update="growl,panel" value="Process" />



AVBravo - October 30, 2013 06:03 PM
Apache Cordova con NetBeans 7.4

Apache Cordova con NetBeans


Apache Cordova es un framework que nos permite desarrollar aplicaciones HTML5 para Android.



Requisitos



Instalar Apache Ant
Descargamos el archivo comprimido apache-ant-1.9.2-bin.zip
Lo descomprimidos
Agregamos al path
sudo gedit /etc/profile


Agregar
export ANT_HOME=/home/avbravo/apache-ant-1.9.2
export PATH=$PATH:${ANT_HOME}/bin


ejecutar
cd /etc
source profile
Generalmente si no lo reconoce reiniciamos el computador


Para testear la configuración
escribimos an
t





Instalar Git
sudo apt-get install git-core git



Nodejs
Instalar Nodejs
Referencia





sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs


Instalar cordova
sudo npm install -g cordova
Esperemos que termine la descarga





Instalar Android SDK
Descargar el SDK


Si tenemos sistema operativo de 64bits, debemos agregar
sudo apt-get update
sudo apt-get install ia32-libs-multiarch



Descomprimir el archivo


Crea la carpeta android-sdk-linux
Desde terminal ejecutamos
sudo gedit /home/avbravo/.bashrc


incluimos en el path los directorios
export PATH=${PATH}:/home/avbravo/android-sdk-linux/tools
export PATH=${PATH}:/home/avbravo/android-sdk-linux/platform-tools
export PATH=${PATH}:/home/avbravo/android-sdk-linux




Ahora ejecutamos desde el terminal
android



y se abre el Android Manager


Seleccionar la versión de Android que deseamos trabajar, y presionar el botón Install 6 packages. Apache cordova requiere Android 4.2
Dar clic en Accept License, y presionar el botón Install
Se inicia la descarga de paquetes al finalizar cerramos el Android SDK Manager

Instalar Android Virtual Device (AVD) EMULADOR
Desde Android Virtual Device Manager
Seleccionar en el menú Tools

Fuente




Desde comandos
  • Ver la lista de target
android list targets


Observamos el id correspondiente a la plataforma que deseamos desarrollar. En este caso id:3, or “android-17” nos muestra el soporte para Android 4.2.2, verificamos que muestre ABIs.





  • Creamos un AVD desde la línea de comandos mediante el formato
android create avd -n <name> -t <targetID> [-<option> <value>]
  • Ejecutar
android create avd -n my_android17 -t 3
Si existe más de un ABI nos envia este mensaje de error
en ese caso verificamos el ABIs que deseamo, en este caso x86
android create avd -n my_android17 -t 3 --abi x86




  • Ejecutar
           android avd
   para visualizar el manager



Dar clic en el botón Start, se muestra el diálogo donde especificamos la escala, presionar el botón Launch
se muestra el depurador
Eliminar el avd
android delete avd -n <name>
android delete avd -n my_android1.5




Crear aplicacion Apache Cordoba desde consola


Ejecutamos
cordova create hello com.example.hello HelloWorld


crea el directorio hello para la aplicacion y entramos al directorio
cd hello


si ejecutamos un ls, podemos ver los directorios de la aplicacion



Construir la aplicacion para android
cordova platform add android



Construimos la aplicacion
cordova emulate android


Esperamos que se cargue HelloWorld



Dar un clic en HelloWord y vemos la aplicación en el movil.


Entramos al directorio  www
cd www
ejecutamos el comando ls


editamos el archivo index.html



hacemos el build  y ejecutamos el emulador









NetBeans IDE
Configurar Android sdk
Menu Tools→ Options-->Miscellaneous
Especificar Android SDK Location



Creamos un proyecto Cordova
File→ New-->Categories: HTML5 Projects:Cordova Application


Project Name: CordovaEjemplo





Seleccionamos la plantilla



Biblioteca Javascript



Indicamos el ID
Configurar el emulador


Instalarlo en el Movil



AVBravo - October 21, 2013 05:08 PM
Conferencia DESARROLLO DE APLICACIONES JEE7 CON NETBEANS

Sitio Web del congreso http://cicis.ujcm.edu.pe/
La Universidad José Carlos Mariategui, ubicada en Moquegua, PERU, organizo el Congreso Internacional de Computación, Informática y Sistemas, denominado CICIS, donde tuve la oportunidad de exponer mediante videoconferencia(hangout), el tema "DESARROLLO DE APLICACIONES JEE7 CON NETBEANS"
En la misma se explico NetBeans IDE, NetBeans Platform, y lo nuevo en JEE7.



Mis felicitaciones a los organizadores del evento.



Algunos temas incluían CDI,  Bean Validation y al final se realizo una aplicación web utilizando
NetBeans IDE con Java Server Faces 2.2 + JPA2.1+EJB.









AVBravo - October 15, 2013 08:43 PM
Usando Dialog Framework

Primefaces 4.0 ofrece componentes interesantes como Dialog Framework, que nos permiten mostrar un dialogo desde nuestros CDI Beans.
.



@Named
@RequestScoped

public class JSFUtil implements Serializable {
   public static void infoDialog(String titulo, String texto){
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, titulo, texto);  
         
     RequestContext.getCurrentInstance().showMessageInDialog(message);

   }
}

En el controller llamamos al método infoDialog

@SessionScoped
@Named
public class UserController implements Serializable{

public void Mensajes(){
JSFUtil.infoDialog("Mensaje","Existe un registro con ese id");
}

}












AVBravo - October 09, 2013 09:01 PM
Utilizando facelets con < p:layout >

Utilizando facelets con < p:layout >

Integramos facelets con el componente <p:layout> de primefaces. Teniendo presente que <p:layout> utiliza    <p:layoutUnit position="north”> para definir las areas y facelets necesitamos  definir el área mediante <ui:insert name="top"> .


<?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:ui="http://java.sun.com/jsf/facelets"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:p="http://primefaces.org/ui"
     xmlns:f="http://xmlns.jcp.org/jsf/core">
   <f:view contentType="text/html">
       <h:head>
           <f:facet name="first">
               <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
               <title>PrimeFaces</title>
           </f:facet>
            <style type="text/css">
               .ui-layout-north {
                   z-index:20 !important;
                   overflow:visible !important;;
               }
               .ui-layout-north .ui-layout-unit-content {
                   overflow:visible !important;
               }
           </style>
       </h:head>


   
   <h:body>
       <p:layout fullPage="true">
           <p:layoutUnit position="north" size="100" resizable="true" closable="true" collapsible="true">
               <ui:insert name="top">
         Header
               </ui:insert>
           </p:layoutUnit>
           <p:layoutUnit position="south" size="50" closable="true" collapsible="true">
               <ui:insert name="bottom">
                   Footer
               </ui:insert>
           </p:layoutUnit>
           <p:layoutUnit position="west" size="175" header="Left" collapsible="true">
               <ui:insert name="left">
                   Left
               </ui:insert>
           </p:layoutUnit>
           
           <p:layoutUnit position="center">
               <ui:insert name="center"></ui:insert>
           </p:layoutUnit>
       </p:layout>
   </h:body>
       </f:view>
</html>

AVBravo - September 30, 2013 08:14 PM
Revisión del Libro: Beginning Java EE 7

Revisión del Libro: Beginning Java EE 7


Antonio Goncalves hace una redacción excelente sobre JEE7, de manera que los expertos y novatos
conozcan las ventajas de JEE7 ademas de los aspectos fundamentales.
Contenido:

  1. Java EE 7 at a Glance
  2. Context and Dependency Injection
  3. Bean Validation
  4. Java Persistence API
  5. Object-Relational Mapping
  6. Managing Persistent Objects
  7. Enterprise JavaBeans
  8. Callbacks, Timer Service, and Authorization
  9. Transactions
  10. JavaServer Faces
  11. Processing and Navigation
  12. XML and JSON Processing
  13. Messaging
  14. SOAP Web Services
  15. RESTful Web Services

Hace un recorrido excelente sobre "Dependency Injection", Bean Validation, profundiza en
"Java Persistence API", mostrando tips muy validos.

Hace una descripción de la evolución de "EJB 3.2" con ejemplos muy interesantes.

En el capitulo "Java Server Faces", muestra las caracteristicas más importantes.

"Transaction", un capitulo completo sobre las mejores practicas para el manejo de transacciones.

"RESTful", es de lectura obligatoria por el contenido de muy alto nivel.


Realmente si deseas aprender JEE7 debes leer "Beginning Java EE 7"



AVBravo - September 22, 2013 04:05 PM
Agregar primefaces 4.0.RC1.jar al repositorio maven local

Agregar primefaces 4.0.RC1.jar al repositorio maven local




Tenemos el jar descargado

Desde terminal ejecutamos



mvn install:install-file -DgroupId=org.primerfaces -DartifactId=primefaces-4.0.RC1 -Dversion=4.0.RC1 -Dpackaging=jar -DgeneratePom=true -Dfile=primefaces-4.0.RC1.jar

al presionar enter se coloca el jar en el repositorio local





Editar el archivo pom.xml y y colocar en la dependencia
 <dependency>
           <groupId>org.primefaces</groupId>
           <artifactId>primefaces</artifactId>
           <version>4.0.RC1</version>
       </dependency>



Dar clic derecho y seleccionar Build with Dependencies

Se agrega la dependencia al proyecto

AVBravo - September 09, 2013 07:47 PM

Ajustar el tamaño de las columnas en un <p:datatable
Utilizar atributo width para establecer el ancho de la columna.
Por ejemplo: width=”20” establece 20px el ancho



<p:column width="20" filterBy="#{var.historia}" sortBy="#{var.historia}" >
                           <f:facet name="header">
                               <h:outputText value="#{mensajes.historia}" />
                           </f:facet>
                           <!--
                           <p:inputTextarea value="#{var.historia}"  rows="3" style="width: 100% !important;" autoResize="false" />                                                        
                           -->
                             <h:outputText value="#{var.historia}" />
                       </p:column>


AVBravo - September 06, 2013 07:50 PM

Como usar <p:schedule de primefaces con DataClassG
componente schedule primefaces:

Si deseamos crear un schedule para mostrar



Pagina xhtml

               <h:form id="formsprintInsert"  rendered="#{menuBeans.sprintConsultar}">
                   <p:dialog visible="true" header="#{mensajes['tabla.Sprint']}" modal="false" closable="true" showEffect="fade" hideEffect="fade" widgetVar="dialog">  
                       <p:ajax event="close" update="growl" listener="#{loginBean.irInicio()}"/>  
                       <p:schedule  value="#{scheduleController.lazyEventModel}" />  
                   </p:dialog>
                   <br />

                   <p:growl id="growl" life="1500" />
                 
               </h:form>

             










ManagedBeans ScheduleController
Injectamos el sprintData que contiene la lista de sprint y establecemos una hora de inicio.

Named(value = "scheduleController")
@RequestScoped
public class ScheduleController implements Serializable {

   @Inject
   SprintData sprintData;
   private ScheduleModel lazyEventModel;

   public ScheduleController() {
       lazyEventModel = new LazyScheduleModel() {
           @Override
           public void loadEvents(Date start, Date end) {
               clear();
               for (Sprint s : sprintData.getSprintlist()) {

                   Calendar t = Calendar.getInstance();
                   t.setTime(s.getFechainicio());
                   t.set(Calendar.AM_PM, Calendar.PM);                    
                   t.set(Calendar.HOUR, 8);
                    addEvent(new DefaultScheduleEvent(s.getNombre(), t.getTime(), s.getFechaterminacion()));
               }

           }
       };
   }

   public Date getRandomDate(Date base) {
       Calendar date = Calendar.getInstance();
       date.setTime(base);
       date.add(Calendar.DATE, ((int) (Math.random() * 30)) + 1);    //set random day of month  

       return date.getTime();
   }

   public Date getRandomFinal(Date base) {
       Calendar date = Calendar.getInstance();
       date.setTime(base);
       date.add(Calendar.DATE, ((int) (Math.random() * 30)) + 10);    //set random day of month  

       return date.getTime();
   }

   public ScheduleModel getLazyEventModel() {
       return lazyEventModel;
   }
}

AVBravo - September 05, 2013 03:35 PM

Boton en <p:datatable con Primefaces JSFGenerator
Si tenemos un datatable editable con una columna, podemos utilizar un botón para desplegar el diálogo de edición o eliminación de registros.

Edición de registros o eliminación se despliega al dar clic en el botón

Editando la columna en el mismo datatable








Pagina xhtml
 <h:form id="formtiempodedicacionList"  rendered="#{menuBeans.tiempodedicacionListar}">

<p:dataTable var="var" value="#{tiempodedicacionData.tiempodedicacionlist}" paginator="true"
                                    rows="20"
                                    editable="true" editMode="cell"
                                    selectionMode="single"
                                    rowKey="#{var.idtiempodedicacion}"
                                    selection="#{tiempodedicacionData.selectedTiempodedicacion}"  
                                    widgetVar= "tiempodedicacionTable"
                                    filteredValue="#{tiempodedicacionData.filteredTiempodedicacion}"
                                    id="datatableTiempodedicacion"
                                    >
                           <f:facet name="header">
                               <p:outputPanel>
                                    </p:outputPanel>
                           </f:facet>
                          
                           <h:panelGroup>
                           </h:panelGroup>
                  <h:inputHidden id="idtiempodedicacion" value="#{tiempodedicacionData.selectedTiempodedicacion.idtiempodedicacion}"  />
                           <p:column filterBy="#{var.username}" sortBy="#{var.username}" style="width:50%">
                               <f:facet name="header">
                                   <h:outputText value="#{mensajes.nombre}" />
                               </f:facet>
                               <h:outputText value="#{var.usuarios.nombre}" />
                           </p:column>
                         

                           <p:column headerText="#{mensajes.tiempodedicacion}" style="width:25%">  
                               <p:cellEditor>  
                                   <f:facet name="output"><h:outputText value="#{var.tiempodedicacion}" /></f:facet>  
                                   <f:facet name="input"><p:inputText value="#{var.tiempodedicacion}" style="width:96%" label="#{mensajes.tiempodedicacion}"/></f:facet>  
                               </p:cellEditor>  
                           </p:column>
                           <p:column >  
       <p:commandButton id="selectButton" action="#{tiempodedicacionData.establecer()}" update=":formtiempodedicacionList:displaytiempodedicacion,:formtiempodedicacionList:datatableTiempodedicacion" oncomplete="tiempodedicacionDialog.show()" icon="ui-icon-search" title="View">  
                                   <f:setPropertyActionListener value="#{var}" target="#{tiempodedicacionData.selectedTiempodedicacion}" />  
                               </p:commandButton>  
                           </p:column>
                           <f:facet name="footer">
                               <p:commandButton actionListener="#{tiempodedicacionData.updateLista()}" title="#{mensajes['boton.editar']}"                                              

                                                ajax="false" icon="ui-icon-disk" />
                           </f:facet>
                       </p:dataTable>
                   </p:dialog>




Dialogo
<p:dialog id="dialogtiempodedicacion" rendered="#{menuBeans.tiempodedicacionConsultar}" header="#{mensajes['tabla.Tiempodedicacion']}" widgetVar="tiempodedicacionDialog" resizable="false"  height="135" width="550" showEffect="clip" hideEffect="fold">
                       <h:panelGroup id="displaytiempodedicacion">
                           <h:panelGrid id="displayQuery" columns="2" cellpadding="4"
                                        rendered="#{tiempodedicacionData.renderizar}" >

                               <h:outputText value="#{mensajes.username}" />

                               <h:outputText value="#{tiempodedicacionData.selectedTiempodedicacion.username}"/>
                               <h:outputText value="#{mensajes.idsprint}" />
                               <h:outputText value="#{tiempodedicacionData.selectedTiempodedicacion.idsprint}"/>

                               <h:outputText value="#{mensajes.tiempodedicacion}" />
                               <p:inputText   id="tiempodedicacion" value="#{tiempodedicacionData.selectedTiempodedicacion.tiempodedicacion}" title="#{mensajes.tiempodedicacion}" />
                               <f:facet name="footer">
                                   <p:commandButton actionListener="#{tiempodedicacionData.update}" id="editButton"  rendered="#{menuBeans.tiempodedicacionEditar}" title="#{mensajes['boton.editar']}" icon="ui-icon-disk"
                                                    update=":formtiempodedicacionList:displaytiempodedicacion, :formtiempodedicacionList:growl, :formtiempodedicacionList:datatableTiempodedicacion"
                                                    oncomplete="tiempodedicacionDialog.hide()" />
                                   <p:commandButton id="deleteButton" rendered="#{menuBeans.tiempodedicacionEliminar}" title="#{mensajes['boton.eliminar']}" onclick="confirmation.show()" type="button" icon="ui-icon-trash" />
                                   <p:commandButton  id="cancelButton"  title="#{mensajes['boton.regresar']}" icon="ui-icon-close" onclick = "tiempodedicacionDialog.hide()"/>
                               </f:facet>
                           </h:panelGrid>
                       </h:panelGroup>
                   </p:dialog>


AVBravo - September 05, 2013 01:37 AM

Colocar un inputTextarea en un <p:dataTable

<p:column filterBy="#{var.descripcion}" sortBy="#{var.descripcion}">
                                   <f:facet name="header">
                                       <h:outputText value="#{mensajes.descripcion}" />
                                   </f:facet>
                                   
 <p:inputTextarea value="#{var.descripcion}" rows="5" style="width: 100% !important;" autoResize="false" />
                               </p:column>

AVBravo - September 03, 2013 05:04 PM
Cerrar el diálogo e ir al inicio

Cerrar el diálogo  e ir al inicio
Si habilitamos el diálogo visible de forma predeterminada para cerrarlo y redirigir a la pagina de inicio utilizamos el evento ajax close.

<p:dialog visible="true" header="#{mensajes['tabla.Userstories']}" modal="true"  showEffect="fade" hideEffect="fade" widgetVar="dialog">
<p:ajax event="close" update="growl" listener="#{loginBean.irInicio()}"/>  
</p:dialog>





@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {

public String irInicio(){
       return "/index";
}
}