我有一个User类,其中包含一个String用户名.我有一个用户列表,我试图在表中使用
<s:iterator value="users" id="list">
<tr>
<td><s:property value="#list.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
</s:iterator>
Run Code Online (Sandbox Code Playgroud)
行正在显示正确的次数,因此它正在迭代我的列表.但是,我不知道如何访问username属性来显示它.显然我上面所说的不正确......有什么想法吗?
我认为这些技术确实优于Java行业
主要问题:如果我的应用程序当前正在使用Struts 1.x - 并且我正在考虑迁移到用于MVC框架的EITHER Spring-MVC或Struts2 - 是否有任何一个可以更容易从Struts1.2迁移?
为了澄清,我不是在问SpringMVC或Struts2是否总体上更好(SO上有许多现有的Q来解决这个问题) - 从Struts1.2迁移到哪一个更容易.
从迁移的角度来看,我最感兴趣的一点是:在JSP页面中继续(在开始时)继续使用struts1.x的taglib,同时在后端更改为Struts2(或SpringMVC)的API.(换句话说,这些框架中的任何一个都可以支持Struts1.x的taglib作为插件)吗?[注意:这不是一个长期的解决方案 - 但会减少集成的痛苦,因为JSP不需要立即重写.我认为这个问题是有道理的 - 如果没有,请说明为什么]
话虽如此,我当然对任何其他迁移优势感兴趣.
一些背景:
我正在开发一个应用程序,其MVC层是通过Struts 1.2编写的.我们也使用Spring IOC - 尽管该应用程序目前还没有Struts层和Spring的DI设备之间的强大集成.(注意:这是我们在重构时计划纠正的内容,但我的理解是通过一些规划 - 即使使用Spring IOC + Struts2组合也可以正确/有效地完成.)
作为改进/重构代码库的一部分 - 我们希望升级到更现代的MVC框架(以便消除对Action/Form类的需求,并在可能的情况下使用基于Annotation的配置等)但保持整体经典-MVC风格(即目前没有兴趣跳跃到JSF,Tapestry,GWT,Flex,Play等等.我明白这些是非常不同的东西 - 将它们混为一谈只是为了给出一个大致的想法..)此外,我的愿望是采用具有合理牵引力/动力的东西 - 因此为此推定Stripes.这似乎只是让Spring-MVC和Struts2成为竞争者(尽管如果有其他类似风格和强大的行业牵引力 - 我们肯定会考虑它)
可以切换到其中任何一个都需要下降工作量 - 但计划是在模块化水平上进行.出于这个原因,如果其中任何一个支持Struts 1.2的taglib - 它将使切换/测试更容易(因为我们可以在新API中编写特定模块的"Control"实现 - 并让第二个服务器运行旧的Struts1 .2使用相同的jsps实现.QA测试在某种程度上将是"苹果到苹果".这是否有意义,或者这种方法(如果可行的话)会导致比解决更多的麻烦?
另外,如上所述,虽然我的主要问题是使用Spring-MVC或Struts2运行struts1.2的taglib - 我也对Struts2-vs-Spring-MVC的任何其他MIGRATION优势感兴趣.
我目前正在尝试学习Struts2.
我创建了一个表单,一个处理它的动作,一个用于验证它的XML,以及struts.xml中的操作.
每次表单显示时,即使是第一次,Struts2也会尝试验证,因此在用户有机会完成错误之前会显示错误.
这是相关代码:
<!-- /WebContent/views/user/login.jsp -->
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
<s:head />
</head>
<body>
<h1>Login Page</h1>
<s:form action="executeUser">
<s:textfield key="userBean.userName" />
<s:password key="userBean.password" />
<s:submit align="center" />
</s:form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
<!-- /src/struts.xml -->
<?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>
<constant name="struts.devMode" value="true" />
<package …Run Code Online (Sandbox Code Playgroud) 我绝对是Struts2的初学者.我想跟随struts网站上的教程.我按照本教程.我有点麻烦.我在eclipse上创建了动态web项目.然后我按照教程.但是,当我运行该示例时,我收到以下错误.
There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location]
Run Code Online (Sandbox Code Playgroud)
我有以下目录结构

我的struts.xml文件是
<?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>
<constant name="struts.devMode" value="true" />
<package name="basicstruts2" extends="struts-default" namespace="/">
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
<result name="SUCCESS">/HelloWorld.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
谢谢你的回复.
我有以下课程
package com.test;
public class SomeClass {
public enum COLOR {RED,BLUE}
}
Run Code Online (Sandbox Code Playgroud)
我想COLOR在JSP中访问枚举值.我尝试了以下代码,但它不起作用.
<s:property value="@com.test.SomeClass.COLOR@RED"/>
<s:property value="@com.test.SomeClass@COLOR.RED"/>
Run Code Online (Sandbox Code Playgroud)
以前有人问过这个问题吗?[我已经在struts.xml中启用了静态方法访问]
我想在Hibernate中获取最后插入的值的id.
搜索后:
Long lastId = ((Long) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
Run Code Online (Sandbox Code Playgroud)
但是下面的代码给了我这个错误:
java.lang.ClassCastException:java.math.BigInteger无法强制转换为java.lang.Long
请分享你的想法!
解
Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
Run Code Online (Sandbox Code Playgroud)
别忘了导入:
import java.math.BigInteger;
我收到一个java.util.List<Object[]>via JSON-rpc作为JavaScript数组,如下所示.
[
[1, 0.10, 1.00],
[2, 0.20, 2.00],
[3, 0.30, 3.00],
[4, 0.40, 4.00],
[5, 0.50, 5.00],
[6, 0.60, 6.00],
[7, 0.70, 7.00],
[8, 0.80, 8.00],
[9, 0.90, 9.00],
[10, 1.00, 10.00],
[11, 1.10, 11.00],
[12, 1.20, 12.00],
[13, 1.30, 13.00],
[14, 1.40, 14.00],
[15, 1.50, 15.00],
[16, 1.60, 16.00],
[17, 1.70, 17.00],
[18, 1.80, 18.00]
]
Run Code Online (Sandbox Code Playgroud)
我需要将同一个数组传递回服务器(在最后一个维度稍作修改).
我使用以下函数发回这个数组.
var request;
var timeout;
var itemsArray=[];
function insert()
{
if(!request)
{
var i=0;
$('input[name="txtCharge[]"]').each(function()
{
isNaN($(this).val())||$(this).val()===''?itemsArray[i][2]='':itemsArray[i][2]=eval(eval($(this).val()).toFixed(2));
i++;
}); …Run Code Online (Sandbox Code Playgroud) 我有以下(缩短)struts2动作:
public class MyAction extends BaseAction implements CookiesAware {
public String execute() {
if (cookiesMap.containsKey("BLAH"))
blah=Integer.parseInt(cookiesMap.get("BLAH"));
return "success";
}
// For handling cookies
Map<String, String> cookiesMap;
@Override
public void setCookiesMap(Map<String, String> cookiesMap) {
this.cookiesMap = cookiesMap;
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行'cookiesMap.containsKey'时,我得到一个空指针异常 - 在我看来,没有调用setCookiesMap.我已经实现了CookiesAware界面,所以我认为它应该被调用 - 我错过了什么吗?
谢谢
我想将JSON反序列化(绑定)到java对象.如何在Struts2中做到这一点?
我正在尝试使用struts2-json-plugin,你可以在下面的代码中看到,但是从前端发送的JSON没有绑定到我的java对象.你能帮我吗,请问如何使这段代码正常工作?
请看一下我的Action类,我不确定我是否在这个Action中正确处理JSON,或者我错过了什么?
我试图绑定的JSON:
{"data":[
{"active":true,"color":"orange","date":"2008-01-01","id":1,"name":"Chris"},
{"active":false,"color":"blue","date":"2013-03-03","id":2,"name":"Kate"},
{"active":true,"color":"black","date":"2013-05-03","id":3,"name":"Blade"},
{"active":false,"color":"yellow","date":"2013-01-01","id":4,"name":"Zack"}]
}
Run Code Online (Sandbox Code Playgroud)
通过Ajax发送JSON:
$.ajax({
url: "../json/saveJSONDataAction.action",
data: {"data": handsontable.getData()}, //returns all cells' data
dataType: 'json',
type: 'POST',
success: function (res) {
if (res.result === 'ok') {
$console.text('Data saved');
}
}
});
Run Code Online (Sandbox Code Playgroud)
在Struts2中接收JSON:
我可以在调试中使用execute()方法,但不幸的data是,该字段始终为null.我应该怎么做才能使这个字段充满JSON的数据?JSON的格式是否正确绑定到List<Report> data?
@ParentPackage("json-default")
@Action(value="saveJSONDataAction")
@Result(type="json")
public class JSONSaveAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<Report> data;
public JSONSaveAction(){
}
public String execute() {
try {
System.out.println(data);
} catch (Exception e) …Run Code Online (Sandbox Code Playgroud)