首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java旋量税包含循环引用

Java旋量税包含循环引用
EN

Stack Overflow用户
提问于 2014-11-09 20:58:44
回答 1查看 776关注 0票数 1

我对JSF非常陌生,我正在尝试制作一个简单的应用程序,它使用的内容包括{a_{a_

代码语言:javascript
复制
import java.io.Serializable;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Spintax implements Serializable {

    private String spinText;

    public void setSpinText(String spinText) {
        this.spinText = spinText;
    }

    public String setSpintax(String spinText) {
        Random rnd = new Random();
        String pat = "\\{[^{}]*\\}";
        Pattern ma;
        ma = Pattern.compile(pat);
        Matcher mat = ma.matcher(spinText);
        while (mat.find()) {
            String segono = spinText.substring(mat.start() + 1, mat.end() - 1);
            String[] choies = segono.split("\\|", -1);
            spinText = spinText.substring(0, mat.start())
                    + choies[rnd.nextInt(choies.length)].toString()
                    + spinText.substring(mat.start() + mat.group().length());
            mat = ma.matcher(spinText);
        }
        return spinText;
    }
}

我要做的是从简单的表单中获取字符串,使用上面的类生成随机变化--一个集响应作为一个新字符串。

这是我的脸

代码语言:javascript
复制
    <managed-bean>
        <managed-bean-name>spintax</managed-bean-name>
        <managed-bean-class>resources.Spintax</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>spinText</property-name>
            <property-class>java.lang.String</property-class>
            <value>#{spintax.spintext}</value>
        </managed-property>
    </managed-bean>

下面是index.xhtml的一部分,用户在其中将Strig放置为{a_{_{_

代码语言:javascript
复制
    <h:form>
                <h:inputText value="#{spintax.spintext}" />
                <h:commandButton value="Submit" action="result" />
              </h:form></p>

下面是我的result.xhtml的一部分,其中应该显示新的字符串:

代码语言:javascript
复制
    <p><h:outputText value="#{spintax.spintext}" /></p>

我做错什么了?我得到:

代码语言:javascript
复制
HTTP Status 500 - Unable to create managed bean spintax. The following problems were found:

javax.servlet.ServletException: Unable to create managed bean spintax.  The following problems were found: Managed bean spintax contains cyclic references.  Evaluation path: spintax -> spintax. javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
EN

回答 1

Stack Overflow用户

发布于 2014-11-09 22:01:39

问题在于,您试图引用<value>#{spintax.spintext}</value> --与正在创建的<managed-bean-name>spintax</managed-bean-name>相同的manage

代码语言:javascript
复制
<managed-property>
    <property-name>spinText</property-name>
    <property-class>java.lang.String</property-class>
    <value>#{spintax.spintext}</value>
</managed-property>

如果需要将spintext的值传递给下一个请求,可以使用标记f:param,如下所示:

index.xhtml

代码语言:javascript
复制
<h:form>
    <h:inputText value="#{spintax.spintext}" />
    <h:commandButton value="Submit" action="result">
        <f:param name="spintext" value="#{spintax.spintext}" />
    </h:commandButton>
</h:form>

faces-config.xml

代码语言:javascript
复制
<managed-bean>
    <managed-bean-name>spintax</managed-bean-name>
    <managed-bean-class>resources.Spintax</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>spinText</property-name>
        <property-class>java.lang.String</property-class>
        <value>#{param.spintext}</value>
    </managed-property>
</managed-bean>

f:param Param标记为与封闭标记关联的组件设置一个参数。您可以通过替换outputFormat标记中的占位符值来构建复合消息。param标记的主体内容必须为空。还请参阅HTML标记。

请参阅:param.html

我希望这能帮上忙。

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

https://stackoverflow.com/questions/26833259

复制
相关文章

相似问题

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