首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证后Tapestry Zone渲染

验证后Tapestry Zone渲染
EN

Stack Overflow用户
提问于 2013-06-14 20:13:35
回答 2查看 870关注 0票数 0

我在一个表单中有一个Select Enum组件,它在更改区域时更新区域。这工作得很好:

代码语言:javascript
复制
<t:select t:id="anEnum" validate="required" zone="${getZone()}" />

public String getZone() {
    if (anEnum== AnEnum.TYPE1) {
        return "zone1";
    } else if (anEnum== AnEnum.TYPE2) {
        return "zone2";
    } else {
        return "zone3";
    }
}

@OnEvent(value = EventConstants.VALUE_CHANGED, component = "anEnum")
public Object updateDisplay(AnEnum anEnumIn) {
    anEnum= anEnumIn;
    if (anEnum== AnEnum.TYPE1) {
        return zone1.getBody();
    } else if (anEnum== AnEnum.TYPE2) {
        return zone2.getBody();
    } else {
        return zone3.getBody();
    }
}

我遇到的问题是,当我提交一个表单并在onValidate方法中的java类中处理验证时,页面会显示错误的区域-通常是区域3(这可能是有意义的,因为它是上面方法中的'else‘返回)。我如何让正确的区域再次呈现-我在anEnum上尝试了@persist,但没有成功,下面的方法也不起作用

代码语言:javascript
复制
@SetupRender
void setupRender() {
  updateDisplay(anEnum);
}

感谢任何人的帮助!

EN

回答 2

Stack Overflow用户

发布于 2013-06-14 20:45:10

getZone()中检查anTypeEnum实例变量,在updateDisplay()中设置anEnum实例变量。如果这不是你问题中的拼写错误,那就是你的问题。

如果这是一个拼写错误,由于某种原因,anTypeEnum将为null。但是没有你的完整代码,我不能评论这是如何发生的。如果您不@Persist它,或者使用onPassivate()onActivate()跨请求持久化值,它将在表单提交和页面呈现之间被清除。它应该可以与@Persist一起工作,因此您必须以某种方式将其设置为null。请分享您完整的组件/页面代码。

PS:使用zone="zone"代替zone="${getZone()}"

票数 1
EN

Stack Overflow用户

发布于 2013-06-17 20:40:29

我找到了这个问题的答案-如果我早点发布更完整的代码,可能会被社区成员找到(学到的教训!)。

按照我看到的一个例子(抱歉,我后来失去了链接),关于使用Select更新区域,我将我的两个区域中的一个设置为visible="false“。

代码语言:javascript
复制
<t:zone t:id="zone1" id="Zone1" visible="false">

这意味着,即使页面在验证后重新呈现,visible= false也是先例。我更新了代码,在java中调用一个方法来检查区域是否可见。

tml

代码语言:javascript
复制
<t:zone t:id="zone1" id="Zone1" visible="${isZoneVisible()}">

java

代码语言:javascript
复制
public boolean isZoneVisible() {
    if (anEnum== AnEnum.TYPE1) {
        return false;
    }
    return true;
}

按照joostschouten的建议,向anEnum添加一个@persist也是一个好主意。

很高兴地说,现在一切都像预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17108244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档