2015-11-04 2 views
0

Я конвертирую INR в доллары США и наоборот. Когда я бегу, я получаю это предупреждение:Нет действий, отображаемых для пространств имен 2

WARNING [http-nio-8084-exec-22] com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn Could not find action or result 
There is no Action mapped for namespace/and action name netbeans-tomcat-status-test. - [unknown location] 

Действие Файл ConverterAction.java

package com.vishal; 

import com.opensymphony.xwork2.ActionSupport; 
import java.math.BigDecimal; 

public class ConverterAction extends ActionSupport { 
private String from; 
private String to; 
private BigDecimal amount; 
private BigDecimal result; 

public String excecute() { 
ConverterBean n = new ConverterBean(); 
result = n.convert(from, to, amount); 
return SUCCESS; 
} 

public String getFrom() { 
return from; 
} 

public void setFrom(String from) { 
this.from = from; 
} 

public String getTo() { 
return to; 
} 

public void setTo(String to) { 
this.to = to; 
} 

public BigDecimal getAmount() { 
return amount; 
} 

public void setAmount(BigDecimal amount) { 
this.amount = amount; 
} 

public BigDecimal getResult() { 
return result; 
} 

public void setResult(BigDecimal result) { 
this.result = result; 
} 
} 

Bean класс ConverterBean.java

package com.vishal; 

import java.math.BigDecimal; 

public class ConverterBean { 
private BigDecimal INR = new BigDecimal(0.02291); 
private BigDecimal USD = new BigDecimal(46.58); 

public BigDecimal convert(String fromCurrency, String toCurrency, BigDecimal  amount) { 
if (fromCurrency.equals(toCurrency)) { 
    return amount; 
} 

BigDecimal toRate = findRate(toCurrency); 
BigDecimal result = toRate.multiply(amount); 
return result.setScale(2, BigDecimal.ROUND_UP); 
} 

public BigDecimal findRate(String currencySymbol) { 
    BigDecimal returnValue = null; 

    if (currencySymbol.equals("INR")) { 
     returnValue=INR; 
    } 

    if (currencySymbol.equals("USD")) { 
    returnValue=USD; 
    } 
    return returnValue; 
    } 
    } 

Struts.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 
<struts> 
<package extends="struts-default" name="/"> 
<action name="convert"> 
    <result name="success">/result.jsp</result> 
</action> 
</package> 
</struts> 

Index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html> 
<html> 
<body> 
<s:form action="convert"> 
    Enter amount to convert: <s:textfield default="0" name="amount"/> 
    <br/><br/> 

    From: 
    <s:textfield name="from"/> 
    <br/><br/> 

    To: 
    <s:textfield name="to"/> 
    <br/><br/> 

    <s:submit value="submit"/> 
    </s:form> 
</body> 
</html> 

Result.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html> 
<html> 

<body>  
     <h2>Hello</h2>hi 
     <s:property value="result" default="0" /> 

</body> 
</html> 

enter image description here

+1

Я бы подумал о том, чтобы быстро прокрутить простой учебник, прежде чем двигаться дальше; помимо проблем с форматированием, здесь много чего происходит, так как это не будет работать. –

ответ

1

Слишком много для комментария, так вот ваш обзор кода.

ConverterAction

  • Не импортировать вещи вы не должны.
  • Поместите важный материал наверху (геттеры и сеттеры не важны).
  • Будьте последовательны с отступом и расстоянием между
package com.vishal; 

import com.opensymphony.xwork2.ActionSupport; 
import java.math.BigDecimal; 

public class ConverterAction extends ActionSupport { 
    private String from; 
    private String to; 
    private BigDecimal amount; 
    private BigDecimal result; 

    public String excecute() { 
    ConverterBean n = new ConverterBean(); 
    result = n.convert(from, to, amount); 
    return SUCCESS; 
    } 

    public String getFrom() { 
    return from; 
    } 

    public void setFrom(String from) { 
    this.from = from; 
    } 

    public String getTo() { 
    return to; 
    } 

    public void setTo(String to) { 
    this.to = to; 
    } 

    public BigDecimal getAmount() { 
    return amount; 
    } 

    public void setAmount(BigDecimal amount) { 
    this.amount = amount; 
    } 

    public BigDecimal getResult() { 
    return result; 
    } 

    public void setResult(BigDecimal result) { 
    this.result = result; 
    } 
} 

ConverterBean

  • Используйте очень описательные имена переменных.
  • Использование пробелов в ключевых словах по языку.
  • Не вставляйте случайные пустые строки.
  • Возвращение рано.
  • Ручка для всех случаев.
package com.vishal; 

import java.math.BigDecimal; 

public class ConverterBean { 
    private BigDecimal INR = new BigDecimal(0.02291); 
    private BigDecimal USD = new BigDecimal(46.58); 

    public BigDecimal convert(String fromCurrency, String toCurrency, BigDecimal amount) { 
    if (fromCurrency.equals(toCurrency)) { 
     return amount; 
    } 

    BigDecimal toRate = findRate(to); 
    BigDecimal result = toRate.multiply(amount); 
    return result.setScale(2, BigDecimal.ROUND_UP); 
    } 

    public BigDecimal findRate(String currencySymbol) { 
     BigDecimal returnValue = null; 

     if (currencySymbol.equals("INR")) { 
      return INR; 
     } 

     if (currencySymbol.equals("USD")) { 
     return USD; 
     } 

     throw new UnsupportedOperation("Unknown Conversion"); 
    } 
} 

JSP

  • Распорки 2 свойства подвергаются их именем свойство, например, в нижнем регистре.
  • Важное значение имеет форматирование.
  • Действия не являются именами классов, они являются именами действий: у вас даже нет действительного struts.xml на данный момент, как должен указывать журнал вашего сервера.
<!DOCTYPE html> 
<html> 
    <body> 
    <s:form action="convert"> 
     Enter amount to convert: <s:textfield default="0" name="amount"/> 
     <br/><br/> 

     From: 
     <s:textfield name="from"/> 
     <br/><br/> 

     To: 
     <s:textfield name="to"/> 
     <br/><br/> 

     <s:submit value="submit"/> 
    </s:form> 
    </body> 
</html> 

распорки.XML

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 
<struts> 
    <package extends="struts-default" name="/"> 
    <action name="convert"> 
     <result name="success">/result.jsp</result> 
    </action> 
    </package> 
</struts> 

(Конфиг это из памяти, это было некоторое время.)

Вы также будете иметь проблемы при первом запросе страницы, так что не будет никаких значений, так что вы» Получите null повсюду.

+0

Спасибо Дэйву за то, что нашли время, чтобы помочь мне, но я все равно получаю ту же ошибку: не удалось найти действие или результат. . Нет действия, отображаемого для пространства имен и имени действия netbeans-tomcat-status-test. - [неизвестное местоположение] –

+0

@VishalTorne Я бы открыл новый вопрос с вашим фактическим кодом и конфигурацией; невозможно диагностировать старую информацию. –

+0

Привет, Дейв, я благодарю вас за вашу помощь. Я только что обновил вопрос и добавил файл 'result.jsp'. Я получаю такое же предупреждение и значения doesn.t, похоже, связывается со свойствами. –

Смежные вопросы