2016-09-07 2 views
0

에 열거 값 중 하나를 표시 I 보고서를 가지고 내가 성별을 표시 싶어 보고서 세부 밴드에서 열거 필드보고서

public enum Gender { 
    MALE, FEMALE 
} 

입니다

 <textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
      <reportElement style="Detail" x="6716" y="0" width="144" height="29"/> 
      <textElement verticalAlignment="Middle" lineSpacing="Single"/> 
      <textFieldExpression class="java.lang.String"><![CDATA[$F{Gender}]]></textFieldExpression> 
     </textField> 

그러나 textField에는 enum.male.MALE 또는 enum.female.FEMALE 만 표시됩니다. 성별 값에 따라 남성 또는 여성의 텍스트 만 표시 할 수 있습니까?

다음 텍스트 필드 코드 수정 :

 <textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
      <reportElement style="Detail" x="6716" y="0" width="144" height="29"/> 
      <textElement verticalAlignment="Middle" lineSpacing="Single"/> 
      <textFieldExpression class="java.lang.String"><![CDATA[($F{Gender} == enum.male.MALE) ? "Male" : 
                  (($F{Gender} == enum.female.FEMALE) ? "Female" : 
                   "No gender")]]></textFieldExpression> 
     </textField> 

나는 다음과 같은 오류를 얻을 : 열거 더 텍스트 형식 없기 때문에

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jasperViewResolver' defined in class path resource [spring/webmvc-config.xml]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myreport' defined in ServletContext resource [/WEB-INF/reports/reportviews.xml]: Initialization of bean failed; nested exception is org.springframework.context.ApplicationContextException: Could not parse JasperReports report from ServletContext resource [/WEB-INF/reports/OL001_Opiskelijalista.jrxml]; nested exception is net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 
1. Syntax error on token "enum", invalid Expression 
       value = (java.lang.String)((((java.lang.Object)field_Gender.getValue()) == enum.male.MALE) ? "Male" : //$JR_EXPR_ID=120$ 
                          <--> 
2. Syntax error on token "enum", invalid Expression 
                   ((((java.lang.Object)field_Gender.getValue()) == enum.female.FEMALE) ? "Female" : //$JR_EXPR_ID=120$ 
                                <--> 
3. Syntax error on token "enum", invalid Expression 
       value = (java.lang.String)((((java.lang.Object)field_Gender.getOldValue()) == enum.male.MALE) ? "Male" : //$JR_EXPR_ID=120$ 
                           <--> 
4. Syntax error on token "enum", invalid Expression 
                   ((((java.lang.Object)field_Gender.getOldValue()) == enum.female.FEMALE) ? "Female" : //$JR_EXPR_ID=120$ 
                                <--> 
5. Syntax error on token "enum", invalid Expression 
       value = (java.lang.String)((((java.lang.Object)field_Gender.getValue()) == enum.male.MALE) ? "Male" : //$JR_EXPR_ID=120$ 
                          <--> 
6. Syntax error on token "enum", invalid Expression 
                   ((((java.lang.Object)field_Gender.getValue()) == enum.female.FEMALE) ? "Female" : //$JR_EXPR_ID=120$ 
                                <--> 
6 errors 

답변

0

을, 당신이 열거를 확인하고 인쇄 할 필요를 문자열 값.

방법 중 하나는 텍스트 필드에이 표현을 사용하여이 작업을 수행합니다 :

($F{Gender}.getClass().getName().equals("enum.male.MALE") ? "Male" : 
    (($F{Gender}.getClass().getName().equals("enum.male.FEMALE")) ? "Female" : 
    "No gender") 

을 일부 임의의 문자열 값으로 열거를 매핑 할 수 있습니다이 문장과 함께.

+0

내가 제안한 솔루션을 사용하려고 할 때 오류가 발생합니다. 코드와 오류 로그로 내 질문을 업데이트했습니다. – krltos

+0

귀하의 의견을 수용하도록 답변을 업데이트했습니다. – tobi6

관련 문제