поиск бинов из resources.xml в контроллер / службу в Groovy - PullRequest
0 голосов
/ 13 октября 2011

Я использую groovy-grails с отчетами о яшме для разработки приложения.Мне нужно найти «bean-компонент отчета» на основе его параметра (например, имя отчета / идентификатор, извлеченный из базы данных, который я получу по щелчку клиента) - который будет сохранен как свойство bean-компонента отчета из resources.xml либо в reportcontroller, либо в reportservice,Также мне нужно «получить» шаблон jrxml, связанный с этим идентификатором и параметром Map, оба определены как свойства в bean-компоненте.Мне нужно знать, например, как мы можем достичь этого, и нужно ли нам определять какие-либо «управляющие компоненты» в xml, которые управляют этими компонентами отчета.Так, например, bean-компонент отчета будет выглядеть следующим образом:

     <bean id="DeptReport" class="com.myapp.reporting.domain.Report">    
        <property name="reportName" value="Dept Report"/>
        <property name="reportFiles">
          <map>
            <entry key="JasperPrint" value="DeptRoles.jrxml"/>
          </map>
        </property>
        <property name="promptforparameter" value="true"/>
        <property name="parameter" value="department_id"/>
        <property name="displayName" value="report.deptReport.name"/>
     </bean>

Будет много таких бинов.

Кроме того, файл .jrxml для всех отчетов хранится в каталоге, и яЯ хочу связать это местоположение с контекстом отчетности, чтобы при щелчке отчета во внешнем интерфейсе я искал эти значения из контекста в сервисе / контроллере отчетов для генерации отчета.Я знаю, что мы должны где-то делать ctx.getbean (reportId), но я также хочу знать, как настроить bean-компонент менеджера с некоторыми другими свойствами, такими как расположение шаблона, источник данных, карта параметров, reportid и объект jasperreportrenderrer.Таким образом, этот компонент ReportManager загружается многократно при каждом вызове другого отчета и в идеале сохраняется в сеансе пользователя.

1 Ответ

0 голосов
/ 14 октября 2011

Вы должны быть в состоянии сделать что-то вроде этого:

import org.springframework.context.*

class MyService implements ApplicationContextAware {
  ApplicationContext applicationContext

  def getBeanByName( String name ) {
    applicationContext.getBean( name )
  }
}

Это класс grails Service, но то же самое должно быть верно для контроллера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...