La especificación JSR estipula que todos los portlets deben implementar directa o indirectamente la interfaz del portlet. También proporciona una clase base llamada GenericPortlet, que hereda la interfaz del portlet y define métodos que el contenedor del portal puede reconocer y llamar. Entonces, en la mayoría de los casos, ¿los desarrolladores solo necesitan heredar GenericPortlet y no necesitan implementar directamente la interfaz del Portlet? Liferay Portal también es un portal empresarial habilitado para JSR. Veamos cómo extender GenericPortlet en él. )? Su clase personalizada LiferayPortlet extiende GenericPortlet y agrega varios modos como ConfigEdit _ Guest Edit _ Impresión de vista previa predeterminada. )? Definir la clase StrutsPortlet para ampliar los parámetros del modo de inicialización de liferayPortlet y definir el proceso de acciones del proceso. Configure algunos portlets en el archivo de configuración de Liferay. Portlet xml personalizado. Uno de los parámetros muy importantes es la clase de portlet. El valor de este parámetro es generalmente el portlet StrutsPortlet de Liferay, lo que indica que el portlet es un StrutsPortlet. )?Defina la clase JSPPortlet que extiende liferayPortlet. Esta clase no se utiliza en Liferay, por lo que no la estudiaremos aquí. Solo para mencionar brevemente, si el valor del parámetro Configuración de clase de portlet es JSPPortlet, ¿entonces este portlet es JSPPortlet? )? Tenga en cuenta que hay un IFramePortlet que extiende StrutsPortlet, sobre el cual puede tener preguntas.
¿Por qué hay tantos portlets en Liferay y necesito ampliar StrutsPortlet viendo el código fuente de esta clase? ver copia simple en el portapapeles imprimir cadena final estática pública DEFAULT _ EDIT _ ACTION =/iframe/EDIT
cadena final estática pública DEFAULT _ VIEW _ ACTION =/iframe/VIEW
Public void init(Configuración de PortletConfig) lanza PortletException {
Super inicialización (configuración);
if(El validador es nulo (editar acción)){
editAction = DEFAULT _ EDITAR _ ACTION;
}
si (el validador es Null(viewAction)) {
VER ACCIÓN = DEFAULT _ VIEW _ ACTION;
p>
}
}
Cadena final estática pública DEFAULT _ EDIT _ ACTION =/iframe/EDIT
final estática pública; String DEFAULT _ VIEW _ ACTION =/iframe/VIEW;
Public void init(Configuración de PortletConfig) lanza PortletException {
Super inicialización (configuración);
if (El validador es nulo (editar acción)){
editAction = DEFAULT _ EDIT _ ACTION
}
if (el validador es nulo (verAcción)) {
p>
VIEW ACTION = DEFAULT _ VIEW _ ACTION;
}
} Puede conocer claramente la acción predeterminada requerida por la propia definición de IFramePortlet. Cuando el portlet no configura los valores de editAction y viewAction, ¿da valores predeterminados en el código? La siguiente figura ilustra esta relación de extensión de herencia.
Lishi Xinzhi/Article/program/Java/hx/201311/26393