标签: valuestack

struts2 - 理解值栈

我有一个关于struts2值栈的问题.假设我有一个Action类RegisterAction,它有一个execute方法,如下所示:

public String execute() {
    ValueStack stack = ActionContext.getContext().getValueStack();
    stack.push(new String("test string"));
    return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我的struts.xml看起来像这样:

<struts>
    <package name="default" extends="struts-default">
        <action name="*Register" method="{1}" class="vaannila.RegisterAction">
            <result name="populate">/register.jsp</result>
            <result name="input">/register.jsp</result>
            <result name="success">/success.jsp</result>
        </action>        
        <action name="*Test" method="{1}" class="vaannila.TestAction">
            <result name="test">/test.jsp</result>
            <result name="success">/success2.jsp</result>
        </action>        
    </package>
</struts>
Run Code Online (Sandbox Code Playgroud)

因此,在该类中执行execute方法后,控制将流向success.jsp.

我的问题是:

1)如何获得我在堆栈中推送的值success.jsp

2)让我们说success.jsp我有一个<s:submit method="testMethod" />重定向到一个名为的动作类TestAction.换句话说,从Register页面,用户单击submit,并在我们的执行方法中RegisterAction推送堆栈上的"测试字符串".然后我们去success.jsp.该success.jsp有一个提交按钮,指导我们TestAction#testMethod.在TestAction#testMethod,我RegisterAction#execute仍然在堆栈上推送的值是什么?我怎么才能得到它?我逐步完成了eclipse调试器,但我没有看到它的价值.

谢谢.

java struts2 valuestack

17
推荐指数
1
解决办法
3万
查看次数

如何在Struts迭代器中访问ValueStack对象?

我有以下代码:

<s:iterator value="reviews">

    <img src="<s:property value="#request.restaurant.portalImage.url"  />" />

    <s:property value="user.firstName" />
    <s:property value="user.lastName" />
    <s:property value="rating" />
    <s:property value="review" />

</s:iterator>
Run Code Online (Sandbox Code Playgroud)

评论是一个评论对象列表,其中包含评论的详细信息,例如评级和用户名.

我的问题是我无法访问循环中ValueStack上的任何对象.

循环外部<s:property value="#request.restaurant.portalImage.url" />正常工作.但是在循环中它打印为null.

AFAIK和迭代器在ValueStack上推送它的集合,以便所有OGNL表达式都能解决它.但我使用了#,这意味着我明确指定了解析的根对象.

为什么它仍然不起作用?

java struts2 ognl valuestack

7
推荐指数
1
解决办法
4278
查看次数

如何在 Struts 2 的单个视图中使用多个表单/操作

我有一个显示在每个页面上的搜索框。搜索框的 JSP 代码通过图块插入到每个页面中。

搜索框有一个表单和一个操作类SearchAction,需要为下拉框预加载一些属性。班级SearchAction有一个input()方法来执行此初始化。

一些页面在主区域也有自己的表单。还有自己的动作类。他们还有一种input()方法可以进行一些预加载。

  1. 是否可以在同一视图中使用两个操作?
  2. 每个表单如何访问它自己的操作的属性。
  3. 我怎样才能在渲染 JSP 之前调用两个操作类的输入方法?

更新:

我添加了一个精简的示例,因为可能不清楚我要做什么。这是一个register.jsp带有RegisterAction. 该页面还包含搜索表单。(顺便说一句:为了保持简短,我在操作类中省略了 getter/setter 和其他内容)

register.jsp:

<s:form action="executeSearch">
    <s:textfield key="name" label="Name"/>
    <s:textfield key="age"  label="Age"/>
    <s:submit/>
</s:form>

<s:form action="executeRegister">
    <s:textfield key="firstName" label="First Name"/>
    <s:textfield key="lastName" label="Last Name"/>
    <s:textfield key="age" label="Age"/>
    <s:submit/>
</s:form>
Run Code Online (Sandbox Code Playgroud)

struts.xml:

<action name="*Search" class="action.SearchAction" method="{1}">
    <result name="success">/searchresult.jsp</result>
</action>

<action name="*Register" class="action.RegisterAction" method="{1}">
    <result name="input">/register.jsp</result>
    <result name="success">/registerOk.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)

SearchAction.java:

public class SearchAction extends …
Run Code Online (Sandbox Code Playgroud)

java jsp struts2 ognl valuestack

5
推荐指数
1
解决办法
9185
查看次数

比较两个字典的值以接收它们的数值差异Python

我是Python的新手.我有两个字典,它们共享相同的键,但键的值不同.我想比较两个词典,以便我得到每个键的值的数值差异.例如:

dict1 = {'hi' : 45, 'thanks' : 34, 'please' : 60}

dict2 = {'hi' : 40, 'thanks' : 46, 'please' : 50}

换句话说,我想收到第三本字典或一对配对列表,它们会显示这两个字典中值的数字差异(从dict2中减去dict1的值(反之亦然).因此它会像这个:

dict_difference = {'hi' : 5 , 'thanks' : -12, 'please' : 10}

我知道从另一个字典中减去一个字典:

dict1 = Counter({'hi' = 45, 'thanks' = 34, 'please' = 60})

dict2 = Counter({'hi' = 40, 'thanks' = 46, 'please' = 50})

dict3 = dict1-dict2 #将仅返回正值,因此它将给出:

dict3 = {'hi'= 5, 'please' = 10} #这不是我想要的.

我还想过将字典转换成一对列表(我认为这就是它的调用方式):

dictlist = []
for key, value in dict1.iteritems():` …
Run Code Online (Sandbox Code Playgroud)

python dictionary subtraction valuestack

3
推荐指数
1
解决办法
1736
查看次数

Struts2中的ValueStack如何工作?

请考虑以下代码.

public class SampleAction {
  private  String[] sampleArray1 = new String[]{"item1","item2","item3"};
  private  String[] sampleArray2 = new String[]{"a","b","c"};
  private List lst = new ArrayList();
  lst.add(1)
  lst.add(2)
  //Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

当我们尝试在JSP中访问它时,上面的哪些属性将在值栈中?它是否像普通堆栈一样工作,即继续推送它读取的任何属性?

struts2 valuestack

0
推荐指数
1
解决办法
4118
查看次数

标签 统计

valuestack ×5

struts2 ×4

java ×3

ognl ×2

dictionary ×1

jsp ×1

python ×1

subtraction ×1