📅  最后修改于: 2023-12-03 15:20:22.029000             🧑  作者: Mango
OGNL(Object-Graph Navigation Language)是一种表达式语言,可用于方便地访问和操作Java对象的属性。在Struts2中,OGNL被广泛用于获取和设置Action对象中的属性,以及在JSP页面中呈现Action属性。
OGNL的语法类似于Java语言,但更加简洁。以下是一些常用的OGNL语法:
${对象.属性}
。例如${person.name}
将返回对象person的名字属性。${对象.属性=值}
。例如${person.age=18}
将设置对象person的年龄属性为18。${对象.方法(参数)}
。例如${person.sayHello("World")}
将调用对象person的sayHello方法,并传入字符串参数"World"。${数组[索引]}
。例如${array[0]}
将返回数组array的第一个元素。${map['键']}
。例如${map['name']}
将返回键为"name"的map值。在Struts 2中,OGNL不需要单独安装,已经默认包含在Struts 2中。以下是在Struts 2中使用OGNL的例子:
1. 在Action中使用OGNL获取参数
public class LoginAction extends ActionSupport {
private String username;
private String password;
// getters and setters
@Override
public String execute() throws Exception {
if (username.equals("admin") && password.equals("123456")) {
return SUCCESS;
} else {
return ERROR;
}
}
}
在JSP页面中,可以通过OGNL获得Action中的属性值:
<s:form action="login">
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:submit value="Login" />
</s:form>
以上代码中,<s:textfield>
和 <s:password>
标签将创建用于输入用户名和密码的文本框,而 <s:submit>
标签将提交表单并调用Action的execute方法。由于Action已经通过getter和setter方法定义了属性username和password,即可通过OGNL将这些参数传递给Action。
2. 在JSP页面中使用OGNL显示Action属性值
public class PersonAction extends ActionSupport {
private String name;
private int age;
// getters and setters
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
在JSP页面中,可以通过OGNL获得Action中的属性值并显示出来:
<s:property value="name" />
<s:property value="age" />
以上代码中,<s:property>
标签将显示Action中的属性,例如name和age。
OGNL是一个非常方便的表达式语言,可用于访问和操作Java对象的属性。在Struts 2中,OGNL被广泛使用,既可以在Action中获取和设置属性,也可以在JSP页面中显示Action属性。熟练掌握OGNL语法和应用,将帮助程序员更加快速地开发出高效的Web应用程序。