2009-11-08 4 views
1

Oracle ADF 내의 JSP에서 관리 빈에 매개 변수를 전달하는 문제가 있습니다. 여기가 POJO의 시험 방법에 매개 변수를 전달하기 위해 노력하고 있어요 예를 들어 JSP 테스트 페이지는 다음과 같습니다ADF : JSP에서 관리 빈을 통해 메소드 호출하기

<?xml version='1.0' encoding='windows-1252'?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" 
      xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> 
    <jsp:directive.page contentType="text/html;charset=windows-1252"/> 
    <f:view> 
    <af:document title="Automated Scheduling Tool > Customer Portal > Packages" 
       id="d1"> 
     <af:messages id="m1"/> 
     <af:form id="f1"> 
     <center> 
      <br/><br/><br/> 
      <table cellspacing="0" cellpadding="45" width="800"> 
      <tr> 
       <td width="100%" class="darkBackground"> 
       <span class="largeTitle">AUTOMATED SCHEDULING TOOL</span>     
       <br/>     
       <span class="mediumTitle">CUSTOMER PORTAL</span> 
       </td> 
      </tr> 
      <tr> 
       <af:outputText value="#{pageFlowScope.customerFacadeBean.test['test1', 'test2']}" id="ot1" /> 
      </tr> 
      </table> 
     </center> 
     </af:form> 
    </af:document> 
    </f:view> 
</jsp:root> 

public class CustomerFacade { 
    private final PackageMapper mapper; 
    private List<Package> packages; 

    public CustomerFacade() { 
     mapper = new PackageMapper(); 
     packages = mapper.findAllPackages(); 
    } 

    public List<Package> getPackages() { 
     return packages; 
    } 


    public String test(String testString1, String testString2){ 
     System.out.println(testString1 + testString2); 
     return "Success!"; 
    } 
} 

사람이 내가 관리 빈을 통해 POJO에 매개 변수를 전달할 수있는 방법에 대한 제안 사항이 있습니까?

답변

2
#{pageFlowScope.customerFacadeBean.test['test1', 'test2']} 

이것은 합법적 인 표현식 언어 표현식이 아닙니다. 당신은 아마 이런 식으로 뭔가를 할 수 :

public Map<Object, Map<Object, Object>> getTest() { 
    return new HashMap<Object, Map<Object, Object>>() { 
     @Override 
     public Map<Object, Object> get(final Object test1) { 
     return new HashMap<Object, Object>() { 
      @Override 
      public Object get(Object test2) { 
      return getSomething(test1, test2); 
      } 
     }; 
     } 
    }; 
    } 

    private Object getSomething(Object test1, Object test2) { 
    //TODO 
    } 

는 분명히, 이것은 정말 못생긴 : test이지도의지도로 해결

#{pageFlowScope.customerFacadeBean.test['test1']['test2']} 

....

implementing a custom function의 형식으로 #{stuff:callTest(pageFlowScope.customerFacadeBean, 'test1', 'test2')}을 시도해 볼 수 있습니다.

JSP 2.1 Maintenance Release 2을 구현하는 서버는 #{mybean.something(param)} (read this for more info) 형식의 표현식을 지원해야합니다. 일부 프레임 워크는 이미이 구문을 지원할 수 있습니다. 문서를 확인해 볼 가치가 있습니다.

관련 문제