Websphere Portal Server 8.0에서 JSR 286 포틀릿을 실행하고 있습니다. 거기에 파일 업로드를하고 처리 결과를 보여줍니다. 처음에는이 파일을 처리 할 책임이있는 관리 빈이 Request Scope (@RequestScoped)를 가지고있다. 커맨드 버튼을 클릭하여 파일을 업로드하면 MB 단위의 메소드가 올바르게 처리되고 JSP 페이지에 표시되어야하는 결과 모음 (아래의 MB의 dadosCarga 속성)이 채워집니다. 그러나, 페이지가 rederized 때 내 관리 Bean 클래스 (ClassNotFoundException) 찾을 수 없습니다 및 결과가 표시되지 않는 설명 stacktrace 있어요. ViewScoped를 사용하여 동일한 결과를 얻었습니다. 범위를 요청에서 세션 (@SessionScoped)으로 변경했을 때 결과가 표시됩니다.IBM 포털 8.0의 요청 범위 문제
일부 대답에 대한 답변이 googled 인 경우 포틀릿에서 작업과 렌더링 요청의 차이점에 대해 설명하는 this page을 발견했습니다. JSF Portlet bridge을 사용하는 것이 좋습니다. 그러나이 페이지는 더 이상 활성화되지 않습니다. Portlet bridge for Apache Myfaces (MyFaces를 통해 IBM 포털이 실행 됨)이 있습니다. 그러나, 나는 그것을 사용하는 방법을 볼 수 없었다. 단지 WEB-INF/lib에 양쪽 항아리 (API 및 구현)를 넣었습니까? 시도했지만 응용 프로그램에서 페이지를로드 할 때 예외가 발생했습니다. 그래서 나는 그들을 제거합니다.
아래에는 내 포틀릿 구성, Managed Bean 및 JSP 페이지가 나와 있습니다. 이 문제를 어떻게 처리 할 수있는 대안이 있습니까? 또는 correx MyFaces Bridge를 사용하는 방법에 대한 설명이 될 수도 있습니다 (홈 페이지에서 찾을 수 없음).
감사합니다,
라파엘 아폰소
포틀릿 구성 :
@ManagedBean(name = "cargaUsuariosMB")
@RequestScoped
public class CargaUsuariosMB extends AbstractMB {
private String nomeArquivo; // FIle name
private Collection<CargaUsuarioInfoBean> dadosCarga; // processing result.
public String doUploadArquivo() {
this.dadosCarga = ... // process file and receives a collection
this.nomeArquivo = ... // get uploaded file name
return null; // Return to same origin page
}
// Getters...
}
J : 콩 선택 게재
<portlet>
<portlet-name>CargaUsuarios</portlet-name>
<display-name>CargaUsuarios</display-name>
<portlet-class>com.ibm.faces20.portlet.FacesPortlet</portlet-class>
<init-param>
<name>com.ibm.faces.portlet.page.view</name>
<value>/pages/carga/cargaUsuarios.jsp</value>
</init-param>
<init-param>
<name>wps.markup</name>
<value>html</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>Carga de Usuarios</title>
<short-title>Carga deUsuarios</short-title>
<keywords>Carga Usuario</keywords>
</portlet-info>
</portlet>
SP 페이지 (cargaUsuarios.jsp) :
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@taglib
uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model"
prefix="portlet-client-model"%>
<%@page language="java" contentType="text/html"
pageEncoding="ISO-8859-1" session="false"%>
<portlet:defineObjects />
<portlet-client-model:init>
<portlet-client-model:require module="ibm.portal.xml.*" />
<portlet-client-model:require module="ibm.portal.portlet.*" />
</portlet-client-model:init>
<f:view>
<h2>Carga de Usuários</h2>
<h:form enctype="multipart/form-data">
<p>
<label for="arquivoCarga"> <span>File:</span> </label> <input
type="file" name="arquivoCarga" id="FileCarga" />
</p>
<br />
<br />
<h:commandButton value="Salvar File"
action="#{cargaUsuariosMB.doUploadArquivo}"></h:commandButton>
</h:form>
<h:panelGroup id="pnlProcessamento"
rendered="#{not empty cargaUsuariosMB.dadosCarga }">
<h:outputText
value="Dados do File #{cargaUsuariosMB.nomeArquivo} processados com sucesso."></h:outputText>
<br />
<h:dataTable id="tblDadosProcessamento"
columnClasses="numLinha,cpf,status"
value="#{cargaUsuariosMB.dadosCarga}" var="dadosCarga"
styleClass="dadosProcessamento" width="100%" border="1">
<%-- Show processing results. --%>
</h:dataTable>
</h:panelGroup>
<h:messages styleClass="messages" id="msgsPesquisaCadastro"
errorClass="mensagensErro" errorStyle="color: red;"></h:messages>
</f:view>