2016-12-15 1 views
-1

하나의 int 매개 변수가있는 Java 메소드 코드 호출을 포함하는 JasperReports의 jrxml 파일이 있습니다. 모두 단일 매개 변수를 사용하여 다음 코드로 잘 작동합니다. eventProjectid 내가 작동하지 않는 두 번째 매개 변수를 도입 할 필요가 정수JasperReports의 두 매개 변수를 사용하여 Java 메소드를 호출하는 방법

<textField> 
    <reportElement positionType="Float" x="250" y="79" width="103" height="15"/> 
    <textFieldExpression><![CDATA[com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject($F{eventProjectId})]]></textFieldExpression> 
</textField> 

, 내가 얻을 모든 다시 null 값입니다. 다음은 jrxml 코드입니다. eventProjectId는 정수입니다. eventType은 문자열입니다.

<textField> 
    <reportElement positionType="Float" x="250" y="79" width="103" height="15"/> 
    <textFieldExpression><![CDATA[com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject($F{eventProjectId},$F{eventType})]]></textFieldExpression> 
</textField> 

는 여기에 내가

public static String getCubeXAxisLabelMaxConsequenceProject(Integer projectId, String eventType){ 
    ProjectEntity projectEntity = projectService.findById(projectId); 

    CubeConfigEntity cubeConfigEntity=cubeConfigService.findByCubeTypeName(eventType,projectEntity.getCubeConfigName()); 
    if (cubeConfigEntity != null) { 
     return cubeConfigEntity.getxAxisName(); 
    } else { 
     return ""; 
    } 
} 

그냥 내가 측은 호출을 디버깅 시도 명확하게하기 위해 전화를 시도하고 자바 코드입니다. 메소드 서명이 jrxml과 Java 메소드를 비교하는 방법에 문제가 있다고 생각합니다. 디버그에서는 단일 매개 변수 메서드가 호출되지만 두 매개 변수가있는 메서드는 호출되지 않습니다.

도움을 주시면 감사하겠습니다.

+0

귀하의 코드는 괜찮 그들과 함께 유효한 값이 있습니까 있는지 확인하십시오 당신은 심지어 10 개 매개 변수를 사용하여 메서드를 호출 할 수 있습니다. 잘못된 이름으로 메소드를 호출 할 경우 예외가 발생합니다. 권리? '작동하지 않는 두 번째 매개 변수를 도입해야합니다. 모두 null 값을 반환합니다. '- 즉, 1) 메소드의 논리가 잘못되었을 수 있습니다. 논리를 확인하기 위해 간단한 테스트 (단위 테스트)를 작성할 수 있습니다. 2) 예상했던 데이터가 아닐 수도 있습니다. textFields로 검사 할 수 있습니다. 3) 아마도 classpath에 jar의 이전 버전이 있습니다. 버전을 다시 다시 확인하십시오 –

답변

1

두 가지 버전을 통해 간

com.rem40.reports.ReportUtils.getCubeXAxisLabelMaxConsequenceProject() 

귀하의 방법, 맞죠? 하나는 단일 정수 인수를 허용하고 다른 버전은 정수 및 문자열을 인수로 허용합니다. japser 보고서가 클래스 파일 또는 라이브러리의 새 버전을 가리키고 있는지 다시 한 번 확인하십시오. 그냥 자바이다,

또한, 사용하는 두 개의 필드,

$F{eventProjectId} 
$F{eventType} 
+0

실제로 두 가지 방법이 있습니다 – snafua

+0

여러 개의 인수가 있으면 문제가되지 않으며 동일한 메소드 이름으로 다른 서명이 없어야합니다. 나는 너를 혼란스럽게하는 다른 것이 있어야한다고 생각한다. – leeyuiwah

+0

사실 두 개의 getCubeXAxisLabelMaxConsequence (Integer eventProjectId) 메서드와 getCubeXAxisLabelMaxConsequenceProject (Integer eventProjectId, String eventType) 값은 두 필드 모두 보고서의 일부로 값을 출력하므로 올바른 것으로 알고 있습니다. 유일한 논증은 효과가 있으며, 두 가지 논증 일뿐입니다. 두 메서드는 모두 같은 클래스 파일에 있으므로 올바른 Java 클래스가 제공되는 올바른 경로를 알고 있습니다. – snafua

관련 문제