2015-07-10 5 views
2

Я использую Struts2 2.3.24 и пытаюсь настроить демо, которое OGNL вызывает конструкторOGNL не может вызывать конструктор

package ac.nz.unitec.struts2; 

public class User { 

private String username; 
private int age; 

public User(String username, int age){ 
    this.username = username; 
    this.age = age; 
} 

public User(int age){ 
    this.age = age; 
    System.out.println("user"); 
} 

public User(){} 

public String getUsername() { 
    return username; 
} 
public void setUsername(String username) { 
    this.username = username; 
} 
public int getAge() { 
    return age; 
} 
public void setAge(int age) { 
    this.age = age; 
} 

@Override 
public String toString() { 
    return "user " + age; 
} 
} 

в JSP, я пытаюсь вызвать User конструктор:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<!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=UTF-8"> 
<title>OGNL</title> 
</head> 
<body> 
    zz 
    <s:property value="new ac.nz.unitec.struts2.User(28)"/><br> 
    zz 
    <s:debug/> 
</body> 
</html> 

Однако на выходе отображаются только zz и zz, я не понимаю, что с ним не так. Спасибо за любые предложения

+0

Не забудьте принять/отменить ответы, которые вам помогли. Это также поможет будущим посетителям с аналогичной проблемой. –

+0

Привет, Александр, как принять? Затем я подтвердил, но не вижу кнопку «принять». @AleksandrM – user1888955

+0

Прочитайте http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. –

ответ

2

В последних версиях Struts2, создающих объекты непосредственно в JSP, НЕ допускается по соображениям безопасности.

Создайте метод внутри вашего действия, который создает новый объект и вызывает его из JSP, или вы можете попробовать использовать тег <s:bean>.

Подробнее о Internal security mechanism.

+0

Действительно оценен за это объяснение :) – user1888955

+1

@ user1888955 вы не оценили его достаточно, или вы бы его поддержали и приняли;) –