1

我正在尝试验证从 URL 传递的一些值。我正在尝试在 UI 中获取这些值,但不起作用。

我正在尝试这个。

// link send by email, click to validate
String url = "http://localhost:8080/MyProject/ValidateValues?NAME=FERNANDO&AGE=34"

// ValidateValues UI class
public class ValidateValues extends UI{
    @Override
    protected void init(VaadinRequest request) {
        String name = request.getParameter("NAME");
        String age = request.getParameter("AGE");

        System.out.println(name);
        System.out.println(age);
    }
}

任何想法 ?

4

3 回答 3

2

以下代码提供了一个可行的解决方案:

String sPathInfo = request.getPathInfo();
if ("/ValidateValues".equals(sPathInfo)) {
    // TODO: Check if NAME and AGE are contained in the ParameterMap!
    String sName = request.getParameterMap().get("NAME")[0];
    String sAge = request.getParameterMap().get("AGE")[0];
    Notification.show(String.format("Name: %s Age: %s", sName, sAge));
}
else {
    // not correct path
}
于 2013-12-16T15:38:04.497 回答
1

您可以在字符串级别工作。

首先获取包含所有值的子字符串。

String allVal = url.substring(url.indexOf("?"));

然后,您可以使用 & 作为分隔符拆分此字符串以获取分配。

String[] values = allVal.split("&");

最后,您可以使用 = 作为分隔符拆分值的每个元素。

for(String val : values){
   String[] a= val.split("=");
   String varName=a[0];
   String varValue=a[1];
 }

您现在可以使用 varName 和 varValue 进行验证

于 2013-12-16T14:15:49.633 回答
0

VaadinRequest 没有提供获取整个实际 URL 的简单方法,但是使用request.getParameter("v-loc");可以解决这个问题。当您拥有完整的 URL 时,可以使用java.lang.String工具包来使用它

于 2014-10-08T06:05:49.690 回答