Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > struts2, использование ognl


Автор: potato 25.6.2009, 20:42
Использую struts2, первая страница, в которой вводятся данные:
Код

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<s:form action="EnterValues" method="POST">
    <s:textfield name="username" label="Username" />
    <s:submit value="Enter"/>
</s:form>
</body>
</html>


Action клас:
Код

package org.potato.chapterSix;
import com.opensymphony.xwork2.ActionSupport;

public class EnterValues extends ActionSupport {
    private String username;
    private String defaultValue;

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String execute() {
        setDefaultValue("Username is unknown");
        return SUCCESS;
    }

}


Страница действия, которая отображает результат:
Код

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<h3>Username is: <s:property value="usename" default="%{defaultValue}"/></h3>
</body>
</html>


В s:property, default принимает текстовое значение и нужно использовать escape sequence "%{expression}", чтоб получить defaultValue с Action класса(value равно "usename", чтоб struts2 получал свойство defaultValue с action класса). Но вместо того, чтоб OGNL работал, мы получаем такой результат:
Код

Username is: %{defaultValue}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)