2012-10-10 25 views
1

我只是學習如何使用掛毯,我不斷遇到下列錯誤例外:源是空的的getProperty(NULL,「代理」)

Exception: source is null for getProperty(null, "agent")  
ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2203) 

這來,是在我的HTML頁面的代碼

<tr> 
      <td valign="center" align="right" height="30"><span class="label1"> <span key="agentDeletionSalesParentActivityType" />&nbsp;:&nbsp;</span></td> 
      <td valign="center" align="left" height="30"><select jwcid="[email protected]on" regions="ognl:{activity.agent.region}" emptyOption="true" disabled="ognl:disabled" value="ognl:parentActivityType" /></td> 
     </tr> 
      <tr> 
      <td valign="center" align="right" height="30"><span class="label1"> <span key="agentDeletionSalesChildActivityType" />&nbsp;:&nbsp;</span></td> 
      <td valign="center" align="left" height="30"><select jwcid="agentDeletionSalesChildActivityType" regions="ognl:{activity.agent.region}" emptyOption="true" disabled="ognl:disabled" value="ognl:childActivityType" parent="component:agentDeletionSalesParentActivityType" /></td> 
      </tr> 

這是我的Java代碼

@Persist 
public abstract ActivityType getParentActivityType(); 
public abstract void setParentActivityType(ActivityType parent); 

@Persist 
public abstract ActivityType getChildActivityType(); 
public abstract void setChildActivityType(ActivityType child); 

@Component(id="agentDeletionSalesChildActivityType", type="ActivityTypePropertySelection") 
public abstract ActivityTypePropertySelection getChildActivityPropertySelection(); 

如果你需要更多的代碼,我會很樂意把它(保持它小,從而使得試驗時將代碼放入頁面),任何人都可以看到爲什麼這會返回這個異常?

+0

不是一個真正的答案,但它看起來像你使用舊版本的Tapestry(版本4?)。當你剛開始使用Tapestry時,我建議使用最新版本的Tapestry5 –

+0

@NathanQ:是的,我正在使用Tapestry 4,不幸的是這是我們在這裏使用的Tapestry,我無法改變,所以我必須學習這個:/ –

回答

2

這似乎在說,該activity對象是在這個空:

regions="ognl:{activity.agent.region}" 
0

不知道如果你設法解決這個問題,但我面臨的問題。

您配置和礦山之間的區別是嵌套對象引用

regions="ognl:{activity.agent.region}" 

因爲你的異常狀態:

Exception: source is null for getProperty(null, "agent")  

根據我的經驗,這意味着activity確實是空,如@斯蒂芬C說。

我recieving唯一的例外是:

Exception: source is null for getProperty(null, "question")  

這裏是我的配置。希望你能夠看到一些見解。

SetSecurityQuestions.page

<component id="securityQuestion1Dropdown" type="PropertySelection"> 
    <binding name="model" value="securityQuestion1Model"/> 
    <binding name="displayName" value="message:security_question_1"/> 
    <binding name="value" value="securityQuestion1.question"/> <!-- the offending line --> 
</component> 

SetSecurityQuestions.html

<div class="formline"> 
    <span class="formtext"> 
     <span jwcid="@company:FieldLabelWithColon" 
       field="component:securityQuestion1Dropdown" 
       title="Security Question 1" 
       key="security_question1">Security Question 1</span> 
     <span class="mandatory">*</span> 
    </span> 
    <select jwcid="securityQuestion1Dropdown" tabindex="1"/> 
</div> 

SetSecurityQuestions.java

@Persist("session") 
@InitialValue("new com.org.net.SecurityQuestion()") // the solution 
public abstract SecurityQuestion getSecurityQuestion1(); 
public abstract void setSecurityQuestion1(SecurityQuestion securityQuestion1); 

希望有所幫助。