【发布时间】:2015-05-08 10:02:20
【问题描述】:
所以我正在学习一些基本教程,在这些教程中我尝试通过属性标签显示动作类的属性。不幸的是,这导致什么也没有显示。但我可以通过 action-tag 调用操作。
这是我的文件
web.xml
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="somebasic" class="Basic">
<result>/pages/Login.jsp</result>
</action>
</package>
</struts>
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
This is a test page...
<p>
should show firstname and lastname:
<s:property value="firstname"/>
<s:property value="lastname"/>
</p>
</body>
</html>
basic.java
import com.opensymphony.xwork2.ActionSupport;
public class Basic extends ActionSupport{
private String firstname = "me";
private String lastname = "I";
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String execute() {
return SUCCESS;
}
}
如前所述,如果我在 .jsp 文件中放置一个动作标签,则将触发被调用的动作(设置断点时)。所以可能我错过了一些配置之类的东西。有人也有这个问题吗?
我在 Tomcat 服务器上运行我的 webapp,并且使用 Intellij 14 作为 IDE。
编辑:感谢 Aleksandr M 的灵光乍现。我完全误解了动作概念。我的假设是在想要访问它们时已经初始化了动作属性。但它们必须在使用前执行(通过 URL 或 action-tag)。
【问题讨论】:
-
你需要调用一个动作,将你带到一些jsp。不应直接访问页面。
-
但这与我的问题无关,对吧?即使在索引站点上,属性标签也应该能够在没有任何操作的情况下显示属性
-
如果操作没有被执行,它应该显示什么?
-
它至少应该显示预定义属性
firstname和lastname,还是我误解了什么? -
您尚未执行的预定义值。 (此处需要讽刺的引用。)
标签: java jsp tomcat intellij-idea struts2