저는 JSF를 처음 접했고 {a | b | c} {a | b | c}와 (과) 같은 무작위 유사 콘텐츠를 사용하는 간단한 앱을 만들려고합니다. 내 관리 빈 것 클래스를 만들었 AC 또는 바 등 (그것은 확실히 괜찮습니다) :Java JSF spintax에는 순환 참조가 포함되어 있습니다.
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;
}
}
가 난 할 노력하고있어, 단순한 형태에서 문자열을 얻을 위의 클래스를 사용하는 것입니다 설정된 응답을 새로운 String으로 임의의 변형을 생성합니다. 여기
내 얼굴-confix.xml입니다 : 여기<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>
사용자가 {| B | C A}처럼 Strig을두고 index.xhtml의 일부 {A | B | C} :
<h:form>
<h:inputText value="#{spintax.spintext}" />
<h:commandButton value="Submit" action="result" />
</h:form></p>
<p><h:outputText value="#{spintax.spintext}" /></p>
내가 잘못 뭐하는 거지 :
여기에 새로운 문자열 표시해야 내 result.xhtml의 일부인가? 내가 얻을 :
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)