我一直在試圖對Seam Weld和MyFaces CODI進行一些簡單的測試。在將CODI jar文件添加到我的項目後,我發現它爲每個請求添加了windowId請求值,即使bean作用域爲RequestScoped。是否真的有必要在每個請求中添加windowId請求參數,而bean在RequestScoped?這種情況下是否有任何實際的現實場景?如果沒有必要,可以將其刪除嗎?例如:MyFaces CODI和windowId請求參數問題
這是bean類的代碼:
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("myBean")
@RequestScoped
public class MyBean{
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
這是頁面的正文:
<body>
<h:form>
<h:inputText value="#{myBean.firstName}"></h:inputText>
<br/>
<h:inputText value="#{myBean.lastName}"></h:inputText>
<br/>
<h:commandButton value="submit"></h:commandButton>
</h:form>
</body>
非常感謝您的及時回答;然而,我必須爭辯更多。是的,windowId有必要將瀏覽器標籤與其他標籤區分開來;但是,我們是否需要始終區分標籤?我的意思是爲什麼我們需要它,如果沒有談話涉及?我做了這樣的測試:我只有一個JSF頁面,它包含一個h:表單;它還包含一個h:commandButton,用於重新顯示當前頁面;我只有一個bean,它是RequestScoped;這個bean在那個頁面的h:form中被引用;但是,CODI仍會將windowId添加到請求中。有必要嗎? – carawan
>我的意思是爲什麼我們需要它,如果沒有談話涉及? 我們假設您從使用ConversationScoped的頁面轉到另一個頁面(ViewScoped),然後返回到原始ConversationScoped。如果您將windowId放在中間頁面上,那麼您將失去對話。請注意,CODI的'對話'機制與Seam2和CDI的對話有着根本的不同。 – struberg
我不確定我們是否在同一頁面上。我的問題是爲什麼我們需要windowId,如果我們只有一個bean(只有一個)在項目中並且它是RequestScoped。我根本沒有任何其他bean。 – carawan