I’m trying to create a view in scala using scaladin and integrate it with spring via springvaadinintegration addon, but I’m getting an IllegalArgumentException when I try to access the view.
In my project I have a Java UI:
@Scope("prototype")
@Component(value="ui")
@PreserveOnRefresh
public class MyUI extends UI{
private DiscoveryNavigator navigator;
@Override
protected void init(VaadinRequest request) {
navigator = new DiscoveryNavigator(this, this);
}
}
Then I have some Java views (which work well) like this one:
[code] @Component @Scope(“prototype”) @VaadinView(“main”)
public class AView extends VerticalLayout implements View{
@Component @Scope(“prototype”) @VaadinView(“scalaciudades”)
class CiudadesView () extends VerticalLayout with View{
val ciudades = List()
val table = new Table{
caption = “Ciudades”
sizeFull;
container = new BeanItemContainer(ciudades)
visibleColumns = Seq(“codCiudad”, “nombre”)
}
components += ( table )
override def enter(event: ViewChangeEvent): Unit = {}
}
[/code]I’m getting the error, the stacktrace is:
java.lang.IllegalArgumentException: Trying to navigate to an unknown state 'scalaciudades' and an error view provider not present
at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:528)
at ru.xpoft.vaadin.DiscoveryNavigator.navigateTo(DiscoveryNavigator.java:198)
at com.vaadin.ui.UI.doInit(UI.java:630)
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:223)
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:73)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1390)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Am I doing something wrong or is not possible this way?.
SEVERE:
javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:271)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110)
at com.vaadin.data.validator.BeanValidator.getJavaxBeanValidatorFactory(BeanValidator.java:167)
at com.vaadin.data.validator.BeanValidator.getJavaxBeanValidator(BeanValidator.java:182)
at com.vaadin.data.validator.BeanValidator.validate(BeanValidator.java:115)
at vaadin.scala.Validator$$anon$2$$anonfun$1.apply$mcV$sp(Validation.scala:63)
at vaadin.scala.Validator$$anon$2$$anonfun$1.apply(Validation.scala:63)
at vaadin.scala.Validator$$anon$2$$anonfun$1.apply(Validation.scala:63)
at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
at scala.util.control.Exception$Catch.apply(Exception.scala:102)
at scala.util.control.Exception$Catch.withTry(Exception.scala:129)
at vaadin.scala.Validator$$anon$2.validate(Validation.scala:63)
Hi, I was just trying to use org.tepi.filtertable.FilterTable.
I have compiled it and tried to just simple replace regular Table with FilterTable in some example.
But I am getting:
[error]
\VaadinScalaUI.scala:24: inferred type arguments [org.tepi.filtertable.FilterTable]
do not conform to method add's type parameter bounds [C <: vaadin.scala.Componenton
on:
[code]
val table = new FilterTable {
addContainerProperty(“Test”, classOf[String]
, None)
}
content = new VerticalLayout {
add(table, ratio = 1)
}
[/code]Would somebody give me a hint what should I do?
set the container Property like this:
userTable.addContainerProperty(“Password”, classOf[ com.vaadin.ui.Button ]
, None)
and add the button like this:
val btn = new Button // this is a scala.vaadin.Button - but the .p refers to the wrapped com.vaadin.ui.Button
rowItem.getProperty(“Password”).value_=(btn.p)
class MyComponent extends CustomComponent with Property[String]
{
// code to implement the Property trait
}
With Scaladin the problem is that Property Trait has the same p method as CustomComponent to do the encapsulation. So the error is ovverrdie the method in p property for Property trait… is ambiguos and has diferent parameter.