MonoRail 頁面互動的輸入輸出方式總結

2021-04-13 14:03:11 字數 2841 閱讀 9514

monorail和webform很大的乙個區別就是沒有使用viewstate,不能使用webform中的伺服器控制項。

下面列出我看到的一些方式,有遺漏的地方,歡迎補充。

注:對於中文可能亂碼的情況:

1、需要把如下的nvelocity.properties檔案放入views/ 下:

input.encoding=gb2312

output.encoding=gb2312

2、在web.config中指定中文編碼:

取值方式:

測試html檔案

1、 最原始的request方式:

public void index()

2、 智慧型繫結方式

我們的controller需要從**artdispatchercontroller繼承:

public class servletcontroller : **artdispatchercontroller

然後就可以直接定義方法:

public void index(int id, string name, int age, datetime birthday)

就會自動將值作為引數繫結

另外,如果我們有如下的乙個類:

public class user1

set

}private string _name;

public string name

set

}private int _age;

public int age

set

}private datetime _birthday;

public datetime birthday

set

}}在繫結時可以直接繫結到這個類上面去:

public void index([databind("user")]user1 user)

同時開始時的測試html也要做修改:

加了乙個字首user.

另外user1類中的屬性名是不區分大小寫的,還有當輸入的日期格式不合法時,會賦預設值0001-1-1

3、params方式

string aa = params["id"];

string aa = params["name"]; params屬性中不光儲存有頁面的值,還有http頭資訊的,比如params["remote_host"]就可以取得遠端主機的名稱

將值傳入頁面

1、直接使用request物件

使用request物件可以直接取得上乙個頁面輸入的值,在vm中顯示

vm中:

$request.form.get("birthday")

2、使用flash物件

flash物件的使用和下面的propertybag物件基本相同

public void index()

public void flash1()

也就是把值分別放入propertybag和flash中後跳轉到下乙個action

display.vm中:

$test

$test2

頁面顯示時能正確顯示test的值,test2值取不到

也就是說flash物件可以儲存比如出錯資訊等,在下乙個頁面中顯示

3、普通的propertybag方式

propertybag.add("name", "姓名");

propertybag.add("list", new string ); vm中:

姓名:$name

#foreach ($element in $list)

$element

#end可以傳入一些標準物件,物件和陣列

4、使用propertybag將自定義物件傳入頁面

propertybag.add("user", user);

vm中:

姓名:$user.name

對於復合情況,比如arraylist中儲存user物件的情況也很方便:

arraylist list = new arraylist();

list.add(user);

propertybag.add("list", list); vm中:

#foreach ($element in $list)

$element.name

#end

5、使用helpers物件

對於需要在vm中呼叫類方法的情況,比如servletcontroller類中有如下方法需要在vm中被呼叫:

public string welcome(string str)

index方法:

public void index([databind("user")]user1 user)

主要是要把物件放入helpers物件中去

vm中:

#foreach ($element in $list)

$welcome.welcome($element.name)

#end

另外如果這個方法在很多action中都要呼叫到,我們可以加入如下的類屬性:

[helper(typeof(servletcontroller), "welcome")]

public class servletcontroller : **artdispatchercontroller

如果這個方法不光是這個controller中用到,我們還可以定義乙個包含此屬性的父類,其他需要用到的地方直接從這個父類繼承,那麼在vm中就可以直接使用了

另,monorail也提供了一些標準的helpers:

abstracthelper builtinhelpers =

new abstracthelper

;  

layer父子頁面互動

layer是一款近年來備受青睞的web彈層元件,官網位址是 當layer以iframe層的方式彈出新的視窗 子頁面 如何在子頁面中訪問父頁面的元素和函式。1 訪問父頁面元素值 var parentid parent.id val 訪問父頁面元素值 2 訪問父頁面方法 var parentmethod...

PHP 與web頁面互動

php 與web頁面互動 一 http請求 get方法將表單內容附加在url後傳送,post將表單資訊作為乙個資料塊傳送。get是用來從服 務器上獲 得資料,而post 是用來向服務 器上 傳遞資料。get 是不安全的,因為在 傳輸過程,資料被放在 請求的url 中,而如今現 有的很多伺服器 服 務...

列表框在頁面互動中的應用

列表框在頁面互動中的應用 regist.jsp 其中size屬性制定了列表框顯示選項的條數,如果所有選項多於這個數,將會出現滾動條。每個option標籤對應乙個選項,value屬性是選項的值,如果選項指定了 selected selected 表示這個選項為預設被選擇了。regist do.jsp ...