首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在struts2中访问bean内部操作

如何在struts2中访问bean内部操作
EN

Stack Overflow用户
提问于 2014-09-02 20:09:34
回答 1查看 1.8K关注 0票数 1

我在test.jsp后面单击submit按钮,并尝试在transactionBean中设置值并在HelloWorld.jsp上显示,但是getTransactionBean()返回null。你能告诉我出什么事了吗?

test.jsp

代码语言:javascript
复制
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Login Application</title>
</head>
<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:form action="displayActionlogmetoo.action" method="post">
    <s:submit method="logmetoo" key="login" align="center" />
</s:form>
</body>
</html> 

HelloWorld.jsp

代码语言:javascript
复制
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>

   username <s:property value="transactionBean.username"/>
   password <s:property value="transactionBean.password"/>

</body>
</html>

我的Struts.xml是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>


<package name="default" namespace="/" extends="struts-default"> 
<action name="displayActionlogmetoo" 
    class="com.tutorialspoint.struts2.DisplayLoginAction" 
    method="logmetoo">

<result name="success">HelloWorld.jsp</result>
</action>
</package>
</struts>

我的行动是:

代码语言:javascript
复制
public class DisplayLoginAction extends ActionSupport {

   private TransactionBean transactionBean;
   public TransactionBean getTransactionBean() {
        return transactionBean;
   }

   public void setTransactionBean(TransactionBean transactionBean) {
        this.transactionBean = transactionBean;
   }

   public String logmetoo(){
        System.out.println("Inside logmetoo");
        getTransactionBean().setUsername("usename");
        getTransactionBean().setPassword("password");
        return SUCCESS;
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 20:42:16

有两种方法可以实例化transactionBean

1)自己动手。这真的很简单:

代码语言:javascript
复制
public String logmetoo(){
    System.out.println("Inside logmetoo");

    setTransactionBean(new TransactionBean());
    getTransactionBean().setUsername("gaurav");
    getTransactionBean().setPassword("bhardwaj");
    return Action.SUCCESS;
}

2)在表单中添加输入字段,并使用name属性告诉操作类必须实例化字段。

代码语言:javascript
复制
<s:form action="displayActionlogmetoo.action" method="post">
    <input type="text" name="transactionBean.userName"/>
    <input type="text" name="transactionBean.password"/>
    <s:submit method="logmetoo" key="login" align="center" />
</s:form>

通过向服务器提交表单,struts将自动看到

代码语言:javascript
复制
name="transactionBean.userName"

并执行以下代码:

代码语言:javascript
复制
displayLoginAction.setTransactionBean(new TransactionBean());
displayLoginAction.getTransactionBean().setUserName(*whatever is filled in in the input*);

这不是魔法,它是由param拦截器为您自动完成的。param拦截器是拦截器默认堆栈的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25631549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档