Spring неправильно создает объект правильно. ПОЧЕМУ?

1

Я изучаю, как использовать ZKoss, Maven и Spring только сейчас самостоятельно, и у меня возникают некоторые проблемы, которые я не понимаю, и я был бы очень благодарен, если бы кто-то мог мне помочь. Для меня это похоже, что Spring не правильно создает объект калькулятора, в "CalculadoraServlet".

Вот код:

Zkoss (inidex.zul):

<?page title="Auto Generated index.zul"?>

<window title="Calculadora" border="normal" width="400px" apply="sdec.CalculadoraServlet">

    <grid >
      <rows>
        <row>
            Num1: <textbox id="num1" value="${win$composer.current.num1}" />
        </row>
        <row>
            Num2: <textbox id="num2" value="${win$composer.current.num2}" />
        </row>  
      </rows>
    </grid>
    <button id="submitButton" label="Submit"/> 

    <grid >
      <rows>
        <row>
            Resultado <textbox id="result" value="${win$composer.current.result}" />
        </row>
      </rows>
    </grid>
</window>

CalculadoraServlet:

@Controller
public class CalculadoraServlet extends SelectorComposer<Component>{
 /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Autowired
    private Calculadora servicioCalculadora;


        @Wire
        private Textbox num1;
        @Wire
        private Textbox num2;
        @Wire
        private Textbox result;


     @Listen("onClick = #submitButton")
     public void calcula() throws IOException {

        int numero1=Integer.parseInt(num1.getValue());
        int numero2=Integer.parseInt(num2.getValue());

        int resultado=servicioCalculadora.sumar(numero1, numero2);

        String resul=Integer.toString(resultado);
        result.setValue(resul);
        System.out.println(resultado);

     }

}

И окончательный Calculadora:

package sdec;

public class Calculadora {

        public Calculadora(){

        //"Traza". Se mostrará cada vez que inicie la app y spring instancie un obj calculadora
            System.out.println("Calculadora inicializada por Spring");
        }

        public int sumar(int num1, int num2){

            return num1+num2;
        }
}

Большое вам спасибо! Я младший программист, и это немного сложно понять! знак равно

EDIT: (добавление файла приложенияContext):

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"  
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:oxm="http://www.springframework.org/schema/oxm"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

 <context:annotation-config />

 <context:component-scan base-package="sdec" />

 <bean id="servicioCalculadora" class="sdec.Calculadora"/>

</beans>

И ошибка, которую я получаю, - это исключение исключений nullpointer, когда я нажимаю кнопку "отправить" sk:

abr 01, 2014 9:41:30 AM org.zkoss.zk.ui.impl.UiEngineImpl handleError:1359
Grave: >>java.lang.NullPointerException
>>  at sdec.CalculadoraServlet.calcula(CalculadoraServlet.java:37)
>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>  at java.lang.reflect.Method.invoke(Method.java:606)
...

Thats много для всех! действительно! Это должен быть самый полезный фьюм!

  • 0
    Что происходит, когда вы запускаете это? И вы можете поделиться своим контекстным файлом тоже?
  • 0
    Определенно нужен этот файл контекста.
Показать ещё 2 комментария
Теги:
maven
spring
spring-mvc
zk

1 ответ

1
Лучший ответ

Оке,

Прежде всего @Controller в своем CalculadoraServlet.
Во-вторых, попробуйте запустить весенний боб из вашего весеннего контейнера, а zk - контейнер zk, поэтому нормально, что zk не найдет ваш класс Calculadora.

Вы должны использовать @WireVariable для класса Calculadora.

Так должно быть так:

public class CalculadoraServlet extends SelectorComposer<Component>{

    private static final long serialVersionUID = 1L;

    @WireVariable
    private Calculadora servicioCalculadora;

    ....
}
  • 0
    Большое спасибо!! Вы были почти на месте! Мне пришлось использовать пометку, которую вы отметили, плюс эту: @VariableResolver (org.zkoss.zkplus.spring.DelegatingVariableResolver.class) над «открытым классом CalculadoraServlet расширяет SelectorComposer <Component> {». Кажется, я пропустил некоторые аннотации, которые связывают Zk и Spring. Уфф..терес так много учиться! и я изучал это всего 3 дня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню