【问题标题】:Action Attributes not showing on jsp动作属性未在 jsp 上显示
【发布时间】: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。不应直接访问页面。
  • 但这与我的问题无关,对吧?即使在索引站点上,属性标签也应该能够在没有任何操作的情况下显示属性
  • 如果操作没有被执行,它应该显示什么?
  • 它至少应该显示预定义属性firstnamelastname,还是我误解了什么?
  • 您尚未执行的预定义值。 (此处需要讽刺的引用。)

标签: java jsp tomcat intellij-idea struts2


【解决方案1】:

Struts2 是一个 MVC 框架,其中 struts 映射将您带到操作并根据操作结果显示 Jsp 页面。 在您的 Struts 操作类中添加一个操作,它会将您带到您的 jsp 页面。

例如--

public String execute(){
return "success";
}

struts.xml 中的映射也将是...

<action name="default" method="execute" class="your class name">
        <result name="success" >fully qualified jsp page url</result>
    </action>

要正确学习 struts2,请转到 javabrains 并开始观看教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多