Я изучаю, как использовать 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 много для всех! действительно! Это должен быть самый полезный фьюм!
Оке,
Прежде всего @Controller
в своем CalculadoraServlet
.
Во-вторых, попробуйте запустить весенний боб из вашего весеннего контейнера, а zk - контейнер zk, поэтому нормально, что zk не найдет ваш класс Calculadora
.
Вы должны использовать @WireVariable
для класса Calculadora
.
Так должно быть так:
public class CalculadoraServlet extends SelectorComposer<Component>{
private static final long serialVersionUID = 1L;
@WireVariable
private Calculadora servicioCalculadora;
....
}