Componentes

Como construir componentes, para utilizar em todo um sistema ?

Por exemplo, crio um componente grade, que no qual informo um cabeçalho, uma lista com o resultado de uma consulta ?

Se quero ou não ter botão de alterar, excluir, visualizar, novo .

Assim não preciso ficar criando html no jsp.

Utilizo o Spring

Procure por templates. Se está usando o Spring, uma solução é o thymeleaf, mas existem outras opções.

Obrigado @drsmachado

Usei assim:

public String cadastrar(PaisEntity pais, Model model) {

  Validate.notEmpty(pais.getDescricao(), "Descrição do país deve estar preenchido !");
  repository.salvar(pais);
  return pagina;

}

Mas deu esta operação ilegal.

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Descrição do país deve estar preenchido !

type Exception report

message Request processing failed; nested exception is java.lang.IllegalArgumentException: Descrição do país deve estar preenchido !

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Descrição do país deve estar preenchido !
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

root cause

java.lang.IllegalArgumentException: Descrição do país deve estar preenchido !
org.thymeleaf.util.Validate.notEmpty(Validate.java:43)
br.com.netsoft.desif.controller.endereco.PaisController.cadastrar(PaisController.java:75)
br.com.netsoft.desif.controller.endereco.PaisController$$FastClassBySpringCGLIB$$106a3d7b.invoke()
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:266)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
br.com.netsoft.desif.controller.endereco.PaisController$$EnhancerBySpringCGLIB$$9781d143.cadastrar()
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.

Ninguém !!